Ich habe einige merkwürdige Probleme mit Ereignisbindungen in JQuery. Wir haben viele Eingaben, die wir gerne wissen würden, wenn ihre Werte vom Benutzer geändert werden. Ich lege ihre Veranstaltungen diese Art und Weise:Ereignis vor dem Binden durchgeführt und nach dem Binden ausgelöst
$(document).on("change", ".myClass", changed);
Aber manchmal müssen wir automatische Änderungen über diese Bereiche durchzuführen, so dass ich unbind diese Ereignisse, um die Änderungen durchzuführen und die Ereignisse erneut binden, um zu ändern Auslösungen in diesem Updates zu vermeiden:
$(document).off("change", ".myClass");
$(".myClass").val(whatever);
$(document).on("change", ".myClass", changed);
Aber wenn wir in einem dieser Eingänge nach diesem letzten Prozess klicken wir, dass die Änderung Feuer Ereignis erhalten, auch wenn das Feld nicht jedes Ereignis angeschlossen hatte, wenn sie aktualisiert wurde. Wir wissen, dass Änderungsereignis nicht ausgelöst wird, bis das Feld den Fokus verliert, aber wir verstehen dieses Verhalten nicht.
Jede Hilfe oder Klärung wäre zu begrüßen.
Vielen Dank im Voraus.
Sorry, ich meinte geändert statt Änderung().
Sie müssen dem delegierten Ereignishandler den * Verweis * der Funktion geben, nicht den * Rückgabewert * der Funktion: '$ (document) .on ('change', '.myClass', geändert)'. Beachten Sie auch, dass Ihre Logik sowieso egal ist, da das Ändern des Werts eines Elements durch das Programm kein "Change" -Ereignis auslöst, siehe: https://jsfiddle.net/2185v3z5/ –
Ich sehe in Ihrem Beispiel, dass Sie Recht haben, aber Die Anhebung des Ereignisses passiert in meinem Code, also muss ich sagen, dass ich ein Problem habe, das ich nicht gesehen habe. Vielen dank für Deine Hilfe. – MKP