2017-09-11 2 views
0

Ich frage mich, warum dies mit jquery Hotkeys funktioniert:JQuery Hotkeys kann nicht Wert mit Funktion senden

$(document).bind('keydown', 'm', dothis); 

aber nicht:

$(document).bind('keydown', 'm', dothis(6)); 

Auch wie das nicht funktioniert, :

$(document).bind('keydown', 'm', dothis()); 
+0

die Bindungsereignisse akzeptieren eine Callback-Funktion nicht das Ergebnis einer Funktion – madalinivascu

+0

Also, was ist die Lösung? Sie können nur Funktionen ohne Werte verwenden? – Hasen

+1

'dothis' liefert die Funktion * reference *, die bei jedem Auftreten des Ereignisses ausgeführt wird. 'dothis()' liefert das * result * der Funktion nur zum Definieren des Event-Handlers. –

Antwort

2

Sie müssen geben die Bindung eine Funktion als Parameter.

Im zweiten und dritten Fall geben Sie einen Funktionsaufruf, der ausgewertet wird, und der zurückgegebene Wert wird der Keybind-Funktion übergeben - vermutlich geben Sie keine Funktion zurück, und das tut nichts.

Wenn Sie eine neue Funktion mit eingestellten Parametern aus einer Funktion konstruieren wollen Sie bereits haben, verwenden bind:

$(document).bind('keydown', 'm', dothis.bind(null, 6));

+0

Danke das funktioniert super. – Hasen

0

Sie können auch curried-Funktion verwenden. Seine Funktion, die Funktion zurückgibt.