クラスを持つ要素の値を返すことを意図したjquery.index()のこの単純な使用法があります。
HTML:
<ul>
<li>foo</li>
<li class='on'>bar</li>
<li>roo</li>
</ul>
JS:
var idx = $('li').index('.on');
-1
クラスが最初の要素以外の要素にある場合に返されます。私は何が欠けていますか?
クラスを持つ要素の値を返すことを意図したjquery.index()のこの単純な使用法があります。
HTML:
<ul>
<li>foo</li>
<li class='on'>bar</li>
<li>roo</li>
</ul>
JS:
var idx = $('li').index('.on');
-1
クラスが最初の要素以外の要素にある場合に返されます。私は何が欠けていますか?
セレクターと一緒に使用すると、セレクター (この場合は ) に一致するコレクション.index
内の jQuery オブジェクトの最初の要素 (つまり、最初の ) の位置が返されます。<li>
.on
最初の要素は(2 番目の のみに一致する) に<li>
一致するコレクションの一部ではないため、要素は見つからないと見なされ、文書化されているように -1 を返します。.on
<li>
.index
.on
が最初の場合、その要素のみを含むコレクション内の要素のインデックスを返します。したがって、結果は になり<li>
ます。.index
0
.on
逆に、すべての要素の中で要素のインデックスを見つけたい場合は、<li>
使用します。これは、いずれかが class を持っている$(".on").index("li")
限り、常にインデックスを返します。<li>
on
$('.on').index('li')
あなたが必要とするのは、以下の定義だと思います。
.index( selector )
selector
要素を検索する jQuery コレクションを表す です 。
以下を使用します。
var idx = $('li.on').index();
あなたがする必要があります$('.on').index()