2015-01-05 10 views
13

私はBen Almanのjqueryデバウンスライブラリを使用してボタンの入力をデバウンスしようとしています。 http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/jQueryのデバウンス機能

現在、これは私のコードです。

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

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

問題は、ボタンをクリックしても機能が実行されないということです。私が何か誤解しているかどうかは分かりませんが、わかる限り、私のコードはその例にマッチしています。

+0

それは本当に小さなプラグインですが、なぜあなたは特にちょうどバインド解除および再バインドするので、簡単であるイベントハンドラのために、それを必要とする - > **のhttp://jsfiddle.net/pgabaeju/** – adeneo

+2

どのように他のプラグインをインストールするためにjQueryプラグインのコンシューマーに強制しますか?これはコアAPIの一部でなければなりません。また、あなたのjsfiddleの例では、スロットルがデバウンスではない場合。 – Sukima

答えて

29

同じ問題が発生しました。デバウンス関数はどこにも呼び出されていない新しい関数を返すので、問題が起こっています。

この問題を解決するには、デバウンス関数をjqueryのクリックイベントのパラメータとして渡す必要があります。ここにあなたが持っているべきコードがあります。

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

または '$("。my-btn ")。($。debounce(250、foo))をクリックします。 –