2017-11-13 5 views
0

Ich weiß nicht einmal, wo ich anfangen soll. Ich verwende Kendo Grid, um Daten von einem Server aufzulisten. Beim ersten Laden ist alles in Ordnung, auch wenn ich in der Funktion dataBound zusätzliche Funktionen und dom-Elemente hinzufüge. Anrufe auf den Server scheinen das Grid einfach zu aktualisieren (zu synchronisieren). ABER, es scheint, dass die DataBound-Funktion eine zusätzliche Zeit beim zweiten Mal aufgerufen wird. Das Ausführen einer On-Click-Funktion, die im DataBound codiert ist, führt sie insgesamt 4 Mal aus. Wie kann ich testen, wo das Problem liegt und was ich zerstören muss, um dieses ärgerliche Verhalten zu stoppen?Funktion wird mehrmals nach dem ersten Mal aufgerufen (Kendo Grid)

Ich weiß nicht einmal, welchen Code Sie für das Einfügen in meine ganze Website speichern. Was ist die zugrundeliegende Theorie hinter diesem Verhalten, weil es offensichtlich etwas gibt, das ich im Grunde vermisse, wie Javascript funktioniert und daher Kondo? Wie teste ich das bitte? Vielen Dank!

+0

Beginnen Sie mit Ihrem Grid-Code und allen zugehörigen Ereignissen, die Kendo-Methoden oder -Ereignisse ausführen. – DontVoteMeDown

Antwort

0

Eine schnelle Lösung könnte darin bestehen, dann on() in der Datenbank z.

$(".cell").off("click").on("click", function(e){ ... }); 

Dies wird die zuvor angehängten Handler loswerden und sicherstellen, dass Sie nur eine haben.

Noch besser, verwenden Sie event delegation außerhalb der Grid-Generierung Code.

$(document).on("click", ".cell", function(e) { ... }); 

Mit Ereignisse Delegation, das Ziel der Veranstaltung nicht über die Event-Handler-Setup ist zu der Zeit existieren. Im obigen Beispiel befindet sich der Klick auf dem Dokumentobjekt, das bereits existiert, aber der Handler wird nur ausgelöst, wenn ein Element mit der Klasse "Zelle" tatsächlich angeklickt wird. Sie können diesen Handler einmal in document.ready definieren, bevor das Grid erstellt wird.

Verwandte Themen