我需要在div' myId '中的几个元素中添加各种ID,href和data-parent属性 - 我想在其中返回给定div的ID class:".template-none .section-accordion .accordion"
。
这里的障碍是我使用的系统是拖放式的,因此这些元素将根据用户决定添加的数量而变化。每个元素的ID都是在放置时创建的,但该类保持不变。
现在,这些是内联,但在检查时似乎有index
-1
,这意味着它们可能不会被视为列出的元素。我考虑过使用.sibling
但是在实施方面遇到了困难,因为在创建ID之前我不知道ID。
我目前正在使用它,但是,我在下面的jQuery只获取第一项的ID和索引,而不是单独设置每个实例的样式。我知道这可能是我错过的非常简单的事情。
总而言之,我想实现:
.accordion-body
作为目标,以添加ID和元素。"template-none .section-accordion .accordion"
的每个实例都相对于其父项或单个项设置样式,并将其应用于"template-none .section-accordion .accordion"
的所有实例,而不是基于每个ID。我希望这是有道理的,非常感谢您的意见
这是我到目前为止所拥有的:
jQuery(window).load(function() {
// sort accordions and add id's based on parents
var index = jQuery( ".template-none section.section-accordion" ).index( this );
var myId = jQuery(".template-none .section-accordion").prop("id");
jQuery(".template-none .section-accordion .accordion").attr("id", myId + index)
jQuery(".template-none .section-accordion .accordion-toggle").attr("data-parent", myId + index)
jQuery(".template-none .section-accordion .accordion-body").attr("id", myId + index + 'body')
jQuery(".template-none .section-accordion .accordion-toggle").attr("href", '#' + myId + index + 'body')
});
答案 0 :(得分:0)
首先是问题:
document
传递给index
,因为这是DOM就绪的上下文。#
开头且无效的部分上有ID。相反,请迭代您的部分(例如,使用each
)并修改相对于该部分的后代元素(例如,使用该部分中的find)。
示例:
jQuery(function ($) {
// sort accordions and add id's based on parents
var index = jQuery(".template-none section.section-accordion").each(function (index) {
var myId = $(this).attr('id');
$(this).find(".accordion").attr("id", myId + index);
$(this).find(".accordion-toggle").attr("data-parent", myId + index).attr("href", '#' + myId + index + 'body');
$(this).find(".accordion-body").attr("id", myId + index + 'body');
});
});
JSFiddle玩:http://jsfiddle.net/TrueBlueAussie/w1bg5gwq/7/
注意:
jQuery(function($){...});
是jQuery(document).ready(function(){...});
的便捷快捷方式,它还提供了本地$
变量,因此您可以使用更短的标准jQuery代码。