2015-01-05 11 views
13

Ich versuche, die Eingabe einer Schaltfläche entprellen mit der Jquery Debouncing-Bibliothek von Ben Alman. http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/Debounce-Funktion in jQuery

Derzeit ist dies der Code, den ich habe.

function foo() { 
    console.log("It works!") 
}; 

$(".my-btn").click(function() { 
    $.debounce(250, foo); 
}); 

Das Problem ist, dass wenn ich auf die Schaltfläche klicke, die Funktion nie ausgeführt wird. Ich bin mir nicht sicher, ob ich etwas falsch verstanden habe, aber soweit ich das beurteilen kann, stimmt mein Code mit dem Beispiel überein.

+0

Es ist ein wirklich kleines Plugin, aber warum sollten Sie es brauchen, vor allem für eine Ereignisbehandlungsroutine, die gerade so einfach zu lösen und erneut binden -> ** http: //jsfiddle.net/pgabaeju/** – adeneo

+2

Wie zwingen Sie Kunden eines jQuery-Plugins dazu, ein anderes Plugin zu installieren? Dies sollte Teil der Kern-API sein. Auch dein jsfiddle Beispiel wenn ein Gashebel nicht entprellt. – Sukima

Antwort

29

Ich stieß auf das gleiche Problem. Das Problem tritt auf, weil die Entprellfunktion eine neue Funktion zurückgibt, die nirgendwo aufgerufen wird.

Um dies zu beheben, müssen Sie die Entprellfunktion als Parameter für das jquery click-Ereignis übergeben. Hier ist der Code, den Sie haben sollten.

$(".my-btn").click($.debounce(250, function(e) { 
    console.log("It works!"); 
})); 
+6

oder '$ (". My-btn "). Klicken Sie ($. Debounce (250, foo))' natürlich. –