data - jquery toggle




Jquery.on mit Doppelklick-Ereignis (2)

Gibt es wirklich einen Unterschied zwischen diesen beiden Codeteilen?

Ja. Der erste Code ist eine Form der delegierten Ereignisbehandlung, bei der der Handler durch Ereignisse ausgelöst wird, die das Dokument sprudeln, das durch untergeordnete Elemente ausgelöst wurde. Die zweite bindet einen Event-Handler an das tatsächliche Element, das von jQuery für den angegebenen Selektor zurückgegeben wird (in diesem Fall #areaA tr:has(td) ).

Hier sind die relevanten Informationen aus der jQuery-Dokumentation:

Erstes Stück Code:

Delegierte Ereignisse haben den Vorteil, dass sie Ereignisse von untergeordneten Elementen verarbeiten können , die zu einem späteren Zeitpunkt dem Dokument hinzugefügt werden. Wenn Sie ein Element auswählen, das garantiert zum Zeitpunkt der Zuordnung des delegierten Ereignishandlers vorhanden ist, können Sie delegierte Ereignisse verwenden, um das häufige Anhängen und Entfernen von Ereignishandlern zu vermeiden.

Zweites Stück Code:

Ereignishandler sind nur an die aktuell ausgewählten Elemente gebunden. Sie müssen zu dem Zeitpunkt existieren, zu dem Ihr Code den Aufruf von .on () vornimmt.

Warum sollte das funktionieren:

$(document).on("dblclick", "#areaA tr:has(td)", function(e) {
     //code here
 });

und das nicht

$("#areaA tr:has(td)").on('dblclick', function(e) {
    //Code here
});

Ich folge dem Beispiel auf der Jquery-Dokumentationsseite genau, aber mein Doppelklick wird nicht ausgelöst. Wenn ich es auf die erste Art mache, funktioniert es, aber es scheint, als würde das Ereignis zweimal ausgelöst.

Dies ist im Zusammenhang mit einem Kendo-UI-Raster.

Gibt es wirklich einen Unterschied zwischen diesen beiden Codeteilen?


Der Hauptunterschied besteht darin, dass die Bedingung in der ersten Bedingung bei jedem Klicken überprüft wird. Wenn also das Element mit der id- areaA oder das tr oder td Element dynamisch hinzugefügt wird, kann nur das erste Element funktionieren.





jquery