<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 of index()。在您的示例中,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

09-30 16:19
查看更多