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(
<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/)
有任何想法吗?
请参考 documentation ofindex()
.在你的例子中,jQuery无法真正知道你正在寻找什么样的索引,相对于什么?
一种方法是为.index()提供选择器:
$('.findthis').each( function(){ var index = $(this).index('.findthis')+1; $(this).append(" ( this element = "+index+" )") });
jsFiddle Demo
另一种(在这种情况下可能更有效)方法是在整个集合上运行index(),并将该元素作为参数传递:
var $collection = $('.findthis'); $collection.each( function(){ var index = $collection.index(this)+1; $(this).append(" ( this element = "+index+" )") });
jsFiddle Demo