0

このマークアップがあるとしましょう:

<header>
   <nav>
      <ul>
         <li><a href="">first (not)</a></li>
         <li><a href="">second</a></li>
         <li><a href="">third</a></li>
        <!-- ... more here -->
      </ul>
   </nav>
</header>

.index()関数について知りました

私はこのようにしようとしています:

$('body').on('click','header :not(li:first-child a) a',function(e){
     e.preventDefault();
     alert($(this).parents('ul').find('li').index(this));
});

しかし、それは常に警告します:-1

私は何が欠けていますか?

4

2 に答える 2

3

親だけを取得してみてください:

alert( $( this ).parent().index() );
于 2013-06-11T11:19:47.190 に答える
0

私はお勧めします:

$('body').on('click','header li + li a',function(e){
     e.preventDefault();
     console.log($(this).closest('li').index());
});

JS フィドルのデモ

this問題はindexメソッドにあったと思います。asindexは、メソッドに提供されたセレクターに対して現在一致している要素のインデックスを返し、 a: current/ノードが1 つだけあり、b: 現在のノードが、検索しようとしている要素の兄弟の中にないインデックス。したがって、(JavaScript では、指定された配列内に要素が見つからない場合の従来の結果) が返されます。this-1

また、セレクターを変更しました。最初liではないのインデックスを見つけたいと思っていましたか?しかし、セレクターまたはあなたの意図を誤解している可能性があります。 li

参考文献:

于 2013-06-11T11:21:36.730 に答える