Klicken Sie handler von element in JQuery

Wie bekomme ich eine Referenz auf den click-handler an ein element in JQuery?

Hier ist, was ich versuche zu tun:

Speichern der click-handler,
Ändern Sie den click-handler für den nächsten Klick
Wiederherstellen der ursprünglichen click-handler

var originalClick = $(settings.currentTarget).click;
$(settings.currentTarget).off("click");

$(settings.currentTarget).click(function (e) {
    e.preventDefault();
    settings.model.modal.close();

    $(settings.currentTarget).off("click");
    $(settings.currentTarget).click(originalClick);
});

Der obige code funktioniert die erste Zeit, aber wenn ich auf das element erneut fehlschlägt:

 Uncaught TypeError: Object [object HTMLAnchorElement] has no method 'on' 

Update:


Ich merke jetzt, dass dies ist ein wirklich schlechtes design, die ich versuche zu tun. Ich habe dieses Problem behoben, indem die Aufrechterhaltung einer Sichtbarkeit boolean in meinem viewmodel, wenn es wahr ist, nicht re-öffnen Sie den modal.

  • $(settings.currentTarget).click ist die Funktion, die Sie verbindlich sind die event-handler mit. Es ist nicht die event-handler selbst. Wie war das original-event-handler gebunden? Mit jQuery oder andere Weise?
  • original click-handler gebunden war, mit Knock-out.
  • Dieser könnte in der Lage sein, zu helfen: stackoverflow.com/questions/2518421/...
  • So verwendet Sie eine click verbindlich? Ich weiß nicht, wie es intern arbeitet, aber ich nehme an, knockout ist mit addEventListener. Es gibt keinen Weg, um eine Referenz auf Handler gebunden diese Weise.
  • Ich denke, Sie bekommen diese Nachricht, weil Sie hier aufrufen $(settings.currentTarget).off("click"); wieder während des auf-und nie genannt .Auf ersten. Es sieht aus wie es schon war .aus, wie Sie an der Spitze.
  • sollte das entfernen der Klick-Prozedur in Zeile 4, dann sollte ich das hinzufügen eines neuen click-handler mit der ursprünglichen Funktion.
  • ist es trotzdem das zu erreichen, was ich versuche zu tun, wenn knockout verwendet addEventListener?

InformationsquelleAutor mcottingham | 2013-06-19
Schreibe einen Kommentar