2012-04-05 4 views
1

子をクリックすると、親インデックス番号を知りたいと思います。例として、各ulの子をクリックすると3 ulのdivがあり、親のインデックス番号が表示されます。それは親です。どのように私はこれを得ることができますか?親クリック子のインデックスを見つけるにはどうすればいいですか

のjQuery:

$('.opSection').on('click','li',function(){ 

    var num = $(this).parent('ul').index(); 

    alert(num); 

    //alert(chartData.Indices[$(this).index()][$(this).index()]); 

    }) 

HTML:

<div class="opSection">//parent of all 
<dl><dd> 
     <ul class="selectGroup" title='allIndia' data-select='1'> 
      <li data-index="123" class="c_on">All India</li> // when i click any of li i need 0 
     </ul> 

     <ul class="selectGroup" title='allIndia' data-select='1'> 
      <li data-index="123" class="c_on">All India</li> // when i click this, i need 1 
     </ul> 
</dd></dl> 
    </div> 

答えて

3
$('.opSection').on('click', 'li', function() { 
    alert($(this).parent().index(); 
}); 

私は複数の要素のためのイベントを処理する際のパフォーマンスを改善するために、イベントの委任を使用しました。

重要な部分は、ulを選択するためのparent()、次にindex()です。パラメータを渡すと、その兄弟要素に対する相対位置が返されます。

EDITあなたの代わりに、以下を試してみてください、あなたのマークアップは、あなたが質問に投稿されたものと同じではないことを、あなたのコメントで言ったように:

$('.opSection').on('click', 'li', function (e) { 
    $(e.delegateTarget).find('.selectGroup').index(this.parentNode); 
}); 

$(e.delegateTarget)は同じである(しかし、より速く)より$('.opSection')。次に、すべての子孫(find())を​​のすべてについて検索し、同じindex()メソッドを使用して、クリックした位置を見つけます。

+0

常に0になります。 ULは直接の子ども( '.opSection')ではなく、子どもがいません。子どもの1人がUL – 3gwebtrain

+0

@ 3gwebtrainです:私の編集を参照してください。 – Matt

関連する問題