jQuery-bind-und unbind-event mit Parameter
Ich bin versucht zu binden eine Veranstaltung zu einem textbox
Parameter enthält. Die folgenden halten, sieht aus, als wenn es dies tun sollte, aber jedes mal, wenn die Seite geladen wird, wird Sie ausgeführt.
jQuery(function(){
jQuery('#textbox').bind('click', EventWithParam('param'));
});
Der event wird aufgerufen, die parameter jedes mal, wenn die Seite geladen wird. Dies kann nicht funktionieren, weil Ereignisse mit Parametern werden nicht unterstützt. Wenn dem so ist, ist es eine andere route?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Binden, eine Funktion, die Parameter benötigt, verwenden Sie eine anonyme Funktion zu handeln, wie ein Verschluss über die Parameter.
Deinem Beispiel ist die Ausführung der
EventWithParam
Funktion, und dann zu versuchen, zu binden, um die Ergebnis, dass der Aufruf der Funktion.Aufrufen
Bindung
ohne Angabe einer Funktion lösen Sie alle Handler für die angegebene Art der Veranstaltung (einschließlich der anonymen Funktion). Wenn Sie möchten, zu lösen, die Funktion speziell, müssen Sie es mit einem Namen, wie hier:Kann man Durchlaufen der Ereignis-Parameter, die als zweite Argumente bind(). Es ist nicht direct-callback-parametes aber vielleicht können Sie es nutzen möchten:
Aus der jQuery-Dokumentation:
binden
bdukes ist genau richtig. Ich werde das hinzufügen meiner Antwort, da habe ich vor kurzem gefunden, etwas Interessantes zu tun, mit jQuery-bind/unbind-Funktion und anonyme Funktionen, seine Ereignis-name Leerzeichen. Zuvor oben gezeigt wird, binden die Veranstaltung wird wie folgt aufgerufen.
jQuery('#textbox').bind('click',function(){EventWithParam('param')});
Trennen diese auch der Benutzer aufrufen muss ...
jQuery('#textbox').unbind('click');
In-Effekt, entfernen alle onClick-Ereignisse.
Nun kommt im jQuery-Namen Räume,. Wenn Sie eine anonyme Funktion, die Sie möchten, zu befestigen, um das click-Ereignis und später Bindung, die es tun, wie folgt.
jQuery('#textbox').bind('click.yourNameSpace',function(){EventWithParam('param')});
Dann zu lösen einfach rufen Sie die unbind-Funktion wie folgt.
jQuery('#textbox').unbind('click.yourNameSpace');
Den rest Ihres onClick-events bleiben.
Der Grund ist, dass EventWithParam genannt wird, als eine Funktion direkt in Ihre Bindung. So formuliert ein anderer Weg, man bindet das click-Ereignis der Ergebnis aufrufen
EventWithParam('param')
. Dieser sollte funktionieren:Nun bist du gebunden, das sogar eine Funktion, dass, wenn das Ereignis ausgelöst wird, rufen
EventWithParam('param')