Ich versuche, ein Ereignis an ein textbox
zu binden, das Parameter enthält. Das folgende Keep sieht aus, als ob es es tun sollte, aber jedes Mal, wenn die Seite geladen wird, wird es ausgeführt.
Das Ereignis wird mit diesem Parameter jedes Mal aufgerufen, wenn die Seite geladen wird. Dies funktioniert möglicherweise nicht, da Ereignisse mit Parametern nicht unterstützt werden. Wenn ja, gibt es eine andere Route?
Um eine Funktion zu binden, die Parameter verwendet, verwenden Sie eine anonyme Funktion, um die Parameter zu schließen.
%Vor% Ihr Beispiel führt die Funktion EventWithParam
aus und versucht dann, an das Ergebnis dieses Funktionsaufrufs zu binden.
Wenn unbind
ohne Angabe einer Funktion aufgerufen wird, werden alle Handler für den angegebenen Ereignistyp (einschließlich der anonymen Funktion) freigegeben. . Wenn Sie diese Funktion spezifisch lösen wollen, müssen Sie ihr einen Namen wie folgt geben:
bdukes ist genau richtig. Ich füge meine Antwort hinzu, da ich kürzlich etwas interessantes gefunden habe, was mit jQuerys bind / unbind-Funktion und anonymen Funktionen, seinen Ereignisnamenräumen, zu tun hat. Wie oben gezeigt, wird das Bindungsereignis wie folgt aufgerufen:
jQuery('#textbox').bind('click',function(){EventWithParam('param')});
Um das zu lösen, muss auch der Benutzer anrufen ...
jQuery('#textbox').unbind('click');
Im Endeffekt werden alle onClick-Ereignisse entfernt.
Jetzt kommt in jQuery Namensräumen. Wenn Sie eine anonyme Funktion haben, die Sie an das click -Ereignis anhängen möchten und später losbinden, tun Sie dies wie folgt.
jQuery('#textbox').bind('click.yourNameSpace',function(){EventWithParam('param')});
Dann, um die Bindung zu lösen, rufen Sie die Unbind-Funktion wie folgt auf.
jQuery('#textbox').unbind('click.yourNameSpace');
Der Rest Ihrer onClick-Ereignisse bleibt erhalten.
Der Grund ist, dass EventWithParam als Funktion direkt in Ihrer Bindung aufgerufen wird. Anders ausgedrückt: Sie binden das Click-Ereignis an das -Ergebnis des Aufrufs von EventWithParam('param')
. Das sollte funktionieren:
Jetzt haben Sie die even an eine Funktion gebunden, die, wenn das Ereignis ausgelöst wird, EventWithParam('param')