2017-03-09 1 views
0

Ich habe eine tr mit einem Klick Listener. Ich möchte wissen, welche td war derjenige geklickt:wie bekomme ich die td geklickt mit tr

<tr class ="clickingClass"> 
    <td> first td </td> 
    <td> second td </td> 
</tr> 
$(".clickingClass").on('click', function() { 
    $(this).closest('td'); 
}); 

Die oben nichts zeigt. Wie kann ich das machen?

+0

dies liefert alle td in der tr, ich möchte man wissen, wich – cucuru

+1

geklickt wird 'am nächsten()' geht nur das DOM auf, es nicht nach unten. Versuchen Sie, die Eigenschaft 'target' des' event' zu verwenden, das an die Handler-Funktion übergeben wird. –

Antwort

3

Die Frage verwenden, weil closest() das DOM nach oben geht, es nicht nach unten.

zu tun, was Sie verlangen, dass Sie stattdessen den Event-Handler direkt auf die td Elemente anbringen könnte:

$(".clickingClass td").on('click', function() { 
    // do something with $(this)... 
}); 

Alternativ können Sie verwenden, um die target Eigenschaft des an die Prozedurfunktion übergeben Ereignis zu bestimmen, welche td geklickt wurde :

$(".clickingClass").on('click', function(e) { 
    // do something with $(e.target)... 
}); 
1

können Sie event.target für dieses

$(".clickingClass").on('click',function(event){ 
    alert(event.target); 
}); 
+1

@Mujtaba Kably 2 Standardmäßig gibt 'event.target' immer ein Zielelement und keinen Listener. Wenn Sie 'event.stopPropagation' hinzufügen, gibt es ein Listener-Element –

0

Warum nicht an die td s stattdessen binden?

$(".clickingClass td").on('click',function(){ 
    this //td 
}); 
Verwandte Themen