2012-04-05 4 views
1

Beim Klicken auf Kind, möchte ich die Eltern Index Nr. Wissen. Beispiel, es gibt ein div mit 3 uls, wenn ich auf jedes Kind von ul klicke, sollte es den Elternindex no anzeigen. von seinem Elternteil. Wie kann ich das bekommen?Wie kann ich den Index der Eltern klicken Kind

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> 

Antwort

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

Hinweis I Ereignis Delegation verwendet haben die Leistung zu verbessern, wenn Ereignisse für mehrere Elemente der Handhabung.

Die wichtigen hier Teile parent() die ul auszuwählen, und dann index(), die, wenn sie ohne Parameter übergeben, gibt es Position relativ zu den Geschwisterelementen ist.

EDIT Wie Sie in Ihrem Kommentar gesagt haben, dass Ihr Markup nicht das gleiche ist, was man in der Frage geschrieben, versuchen Sie Folgendes statt:

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

$(e.delegateTarget) gleich ist (aber schneller) als $('.opSection'). Wir suchen dann alle Nachkommen (find()) für alle <ul /> und verwenden dieselbe index() Methode, um die Position des einen zu finden, auf den wir geklickt haben.

+0

es gibt nur 0 immer. die UL ist nicht direkt Kinder von ('.opSection'), es hat keine.von Kindern, eines der Kinder ist UL – 3gwebtrain

+0

@ 3gwebtrain: siehe meine Bearbeitung. – Matt