3
<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/ )

何か案は?

4

5 に答える 5

5

.each()インデックスは、車輪を再発明する必要のないメソッドに渡されます。

$('.findthis').each( function(index){
    $(this).append(" ( this element = " + (index + 1) + " )")
});

フィドルを更新しました。

于 2012-02-21T14:13:44.910 に答える
4

のドキュメントをindex()参照してください。あなたの例では、jQuery は、何に関連して、探しているインデックスの種類を実際に知ることができませんか?

これを行う 1 つの方法は、次のセレクターを提供することです.index()

$('.findthis').each( function(){
      var index = $(this).index('.findthis')+1;
      $(this).append(" ( this element = "+index+" )")
});

jsFiddle デモ

別の (この場合はより効果的な) 方法はindex()、コレクション全体で実行し、要素をパラメーターとして渡すことです。

var $collection = $('.findthis');
$collection.each( function(){
      var index = $collection.index(this)+1;
      $(this).append(" ( this element = "+index+" )")
});

jsFiddle デモ

于 2012-02-21T14:09:52.660 に答える
3

誤って要素を互いに入れ子にしてしまいました。

これを変える:

<h2><h2>

これに:

<h2></h2>

その後、問題なく動作します。デモ: http://jsfiddle.net/Guffa/3c5TZ/14/

于 2012-02-21T14:12:44.473 に答える
1

.index('.findthis')アイテムのリスト内でのみカウントを制限するために使用し.findthisます。

http://jsfiddle.net/3c5TZ/5/のデモ

また、欠落している</h2>バグを修正しました

于 2012-02-21T14:11:32.727 に答える
-1
$('.findthis').each( function(i){
  $(this).append(" ( this element = "+i+" )")
});

これを試して ...

于 2012-02-21T14:23:08.403 に答える