2012-04-05 86 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(); 
}); 

注意我用事件处理委托多个元素事件时提高性能。

这里的重要部分是parent()来选择ul,然后index(),当不带参数传递时,返回它的位置相对于它的兄弟元素。

编辑正如您在您的评论已经说您的标记并不像你在问题发布什么是相同的,而不是尝试以下操作:

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

$(e.delegateTarget)是相同的(但速度更快)比$('.opSection')。然后,我们搜索所有​​的所有后代(find()),并使用相同的index()方法找到我们点击的位置。

+0

它总是只给0。 UL并非('.opSection')的直接子女,它没有孩子,其中一个孩子是UL – 3gwebtrain 2012-04-05 13:25:29

+0

@ 3gwebtrain:请参阅我的编辑。 – Matt 2012-04-05 13:34:17

相关问题