2

HTML:

<div class="div1">Div 1</div>
<div class="div2">Div 2</div> 
<div class="div3">Div 3</div> 
<div class="div4">Div 4</div> 

<div class="test">Test</div>
<br />
<div class="test">Test</div>
<br />
<div class="test">Test</div> 
<br />
<div class="test">Test</div>
<br />

Jquery:

$(".test").each(function(){
    var i = $(this).index();
    alert(i);
});

Fiddle Demo

I would expect the result is 0, 1, 2, 3 but why the output is 4, 6, 8, 10?

4

5 に答える 5

3

簡単な修正 - .each は index をサポートします:

$(".test").each(function(idx){
    alert(idx);
});
于 2013-04-06T16:28:45.107 に答える
3

なぜ出力が4, 6, 8, 10

$(this).index()選択した要素ではなく、その兄弟に相対的な要素のインデックスを返します。br要素と.divX要素も兄弟です。

あなたが望むように見えます:

var $tests = $(".test");

$tests.each(function(){
    var i = $tests.index(this);
    alert(i);
});

またはより簡単:

$(".test").each(function(i){
    alert(i);
});
于 2013-04-06T16:28:55.900 に答える
3

index() は、兄弟に対する要素のインデックスを提供します。クラス text を持つ最初の div は 5 番目の要素で、インデックスは 4、br は 5 インデックス、クラス test を持つ次の div はインデックス 6 などです。次のデモで各要素のインデックスを確認できます

ライブデモ

$("#parent1 *").each(function () {
    alert("TagName >> " + this.tagName + ", Index >> " + $(this).index() + ", Text " + $(this).text());
});

引数が .index() メソッドに渡されない場合、戻り値は、兄弟要素であるReferenceに対する jQuery オブジェクト内の最初の要素の位置を示す整数です。

于 2013-04-06T16:29:05.913 に答える
3

あなたがしたいことはこれです:

$(".test").each(function(i) {
    alert(i);
});

.index()兄弟に対する相対的なインデックスを返します。

于 2013-04-06T16:29:38.210 に答える
2

テスト対象に対して相対的にする必要があります。使用する:

$(".test").each(function(){
    var i = $('.test').index($(this));
    console.log(i);
});

jsFiddle の例

のドキュメントによると.index()

要素のコレクションに対して .index() が呼び出され、DOM 要素または jQuery オブジェクトが渡された場合、.index() は、元のコレクションに対する渡された要素の位置を示す整数を返します。

于 2013-04-06T16:29:11.220 に答える