2012-06-03 21 views
10

イベント "クリック"では、複数のコンテナに含まれる要素のインデックスを取得したいと考えています。返されるインデックスの位置は、bodyタグではなく、そのコンテナに対して相対的に計算する必要があります。異なるコンテナ内の同じ要素クラスのjqueryインデックスを取得する

私はここに例を書いた:http://jsfiddle.net/zUGcK/

私の問題は、私は第二のブロックコンテナ内の行をクリックすると、ラインインデックスが返されるということですが、次のとおりです。3、4、5、私は0、1をご希望のに対し、 2が返されます。

両方のコンテナの各行に対して0、1、2が返されるようにjquery index()の引数を変更する必要はありますか?

おかげ

http://jsfiddle.net/zUGcK/

$('.line').click(function() 
{ 
    alert('index: '+$(this).index('.container .line')); 
}); 

<div class="container"> 
<div class="header">block #1</div> 
<div class="line">line #0</div> 
<div class="line">line #1</div> 
<div class="line">line #2</div> 
</div> 

<div class="container"> 
<div class="header">block #2</div> 
<div class="line">line #0 (index 3 returned instead of 0)</div> 
<div class="line">line #1 (index 4 returned instead of 1)</div> 
<div class="line">line #2 (index 5 returned instead of 2)</div> 
</div> 

答えて

17
あなたは $.index

.index(element) 
element The DOM element or first element within the jQuery object to look for. 
​ 
のこの構文を使用する必要がありますが、それはコンテナ

$(function() 
{ 
    $('.line').click(function() 
    { 
     //alert('index: '+$(this).index('.container .line')); 

     alert($(this).closest('.container').find('.line').index(this)); 
    }); 
}); 

だ内の要素のインデックス値を取得するためにこれを使用することができます

Working Fiddle

+0

ラインブロックがラインコンテナブロック内にある場合はどうなりますか?あなたはここで見ることができます:http://jsfiddle.net/zUGcK/32/この場合、返されるインデックスは常に-1です(要素のインデックスは見つかりませんが、私は間違っているのか分かりません) 。私は、ボタンのコンテナのインデックスを取得しようとしています(ラインはボタン、ラインコンテナはボタンのコンテナ)。ご協力いただき誠にありがとうございます。 – Vincent

+0

http://jsfiddle.net/zUGcK/22/これはあなたの質問と同じフィドルです。これを更新しましたか? –

+0

それから、このhttp://jsfiddle.net/joycse06/zUGcK/35/ –

0

インデックスを$ thisで更新しました。

$('.line').click(function() 
{ 
    var $this=$(this); 
    var indx= $this.parent('.container').find('.line').index($this); 

    alert('index: '+indx); 
}); 
+1

いいえ、 '$(this).index()'はすべての兄弟を参照して、 'div.header'をインクルードします。 –

+0

修正のための@muistooshortに感謝します。私は答えを更新しました。 –

関連する問題