<nav>
<section>
<aside>
<div class="findthis">111111</div>
<div class="findthis">222222</div>
<div class="findthis">333333</div>
<div class="findthis">444444</div>
</aside>
</section>
</nav>
$('.findthis').each( function(){
var index = $(this).index()+1;
$(this).append(" ( this element = "+index+" )")
});
这是有效的! (http://jsfiddle.net/3c5TZ/)
但....当我这样做/插入更多这样的HTML标签时......
<nav>
<section>
<aside>
<div class="findthis">111111</div>
<h2><h2>
<div class="findthis">222222</div>
<span></span>
<div class="findthis">333333</div>
<b></b>
<div class="findthis">444444</div>
</aside>
</section>
</nav>
失败了! (http://jsfiddle.net/3c5TZ/1/)
有什么想法吗?
答案 0 :(得分:5)
索引将传递给您不必重新发明轮子的.each()
方法:
$('.findthis').each( function(index){
$(this).append(" ( this element = " + (index + 1) + " )")
});
答案 1 :(得分:4)
请咨询documentation of index()
。在你的例子中,jQuery无法真正知道你正在寻找什么样的索引,相对于什么?
这样做的一种方法是为.index()
提供选择器:
$('.findthis').each( function(){
var index = $(this).index('.findthis')+1;
$(this).append(" ( this element = "+index+" )")
});
另一种(在这种情况下可能更有效)方法是在整个集合上运行index()
,并将该元素作为参数传递:
var $collection = $('.findthis');
$collection.each( function(){
var index = $collection.index(this)+1;
$(this).append(" ( this element = "+index+" )")
});
答案 2 :(得分:3)
答案 3 :(得分:1)
答案 4 :(得分:-1)
$('.findthis').each( function(i){
$(this).append(" ( this element = "+i+" )")
});
试试这个......