I have a simple table:e.stopPropagation() funktioniert nicht wie erwartet?
Der TR hat <tr onclick='alert("row");'>
Und die Taste hat:
$("body").on('click',".b",function (e){
alert('button');
e.stopPropagation();
});
jedoch - Obwohl ich e.stopPropagation();
es noch alarmiert schrieb: "Zeile, Button".
Jetzt weiß ich, dass der Ereignishandler an die body
angebracht ist und der Wähler gegen ihn (den Click Start auf der Schaltfläche überprüft und auf den Körper nach oben, wie $.live
Gebrauch zu machen, aber gegen document
...).
Aber die Überprüfung sollte für die button
klicken und nicht für den TR
Klick sein.
Es scheint, dass, während ich zu klicken, um es in die "body"
ausbreitet (weil ich Ereignishandler es angebracht ist) und während seiner Art und Weise, um den Körper nach oben den Klick auf den TR
aktiviert.
Was geht hier vor? Wie kann ich meinen Code behalten (an Körper anhängen) und habe immer noch nur Alarm von "Knopf".
P.s.
Ich weiß, ich kann einfach tun:
$(".b").on('click',function (e){
alert('button');
e.stopPropagation();
});
aber ich möchte wissen, warum meine aktuellen Code funktioniert nicht (!).
Give-Wie Sie, dass das Problem zu verstehen scheinen, ist, dass Sie den Event-Handler an den Körper befestigen, ist klar, es nicht das, was Sie‘ erneut fragen. –
@dystyroy Ich habe den Handler an den Körper angeschlossen. Ja. aber ich sagte auch - "Stop Propagation". so IMHO sollte es nur "Zeile" warnen. und von dort - hör auf von oben zu gehen. –
Delegierung Verwenden Sie die Propagierung des Ereignisses, um den Delegaten zu erreichen. Deshalb kann ein Ereignis, das nicht als Onload-Ereignis bubbles (propagieren), nicht mit Delegierung verwendet werden. –