2012-04-05 2 views
1

자식을 클릭 할 때 상위 색인 번호를 알고 싶습니다. 예를 들어, 각 ul의 자식을 클릭 할 때 3 ul의 div가 있고 부모 색인 번호가 표시되어야합니다. 그것의 부모. 이것을 어떻게 얻을 수 있습니까?부모 클릭 자식 색인을 어떻게 찾을 수 있습니까?

jQuery를 :

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

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

    alert(num); 

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

    }) 

: 나는 여러 요소에 대한 이벤트를 처리 할 때 성능을 향상시키기 위해 이벤트 위임을 사용했습니다

<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을 선택한 다음 index()을 선택하는 것입니다. 매개 변수없이 전달하면 형제 요소를 기준으로 위치가 반환됩니다. 빠른

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

$(e.delegateTarget)은 동일 (단 : 마크 업이이 문제에 게시 된 내용과 동일하지 않습니다 당신이 당신의 의견에 말했듯

편집는 대신 다음과 같은 시도)보다 $('.opSection'). 그런 다음 모든 하위 항목 (find())을 모두 <ul />에 대해 검색하고 동일한 index() 방법을 사용하여 클릭 한 위치를 찾습니다.

+0

항상 0입니다. UL은 ('.opSection')의 직접적인 아이들이 아니며, 아이들은 없습니다. 아이들 중 하나는 UL – 3gwebtrain

+0

입니다. @ 3gwebtrain : 제 편집 참조. – Matt

관련 문제