0

ボタンをクリックしたときに多くのクリックが発生しているとしましょう。最初のイベント オブジェクトのみを取得できるように、各イベント オブジェクトを識別する最善の方法は何ですか? eventCounter() 関数...これで問題が解決するかどうかはわかりませんが、バインドとアンバインドを試みましたが、機能しません..

   var eventIndex;
   var elementOjb;

   function eventCount(eventIndex)
   {
       if(eventIndex == undefined)
       {
         return eventIndex = 0;
       }else
       {
         return eventIndex++;
       }
   }

   $("#file").on("click",{source: eventCounter()}, function(event)
   {
        eventIndex = event.data.source;
        elementOjb = $(this);

        if(eventIndex === 0)
        {
             // create tree
             return false;
        }
   });
4

1 に答える 1

0

関数を「デバウンス」したい、つまり、複数回トリガーされた場合でも一度だけ実行したい。

これを支援する jQuery プラグインがあります: http://benalman.com/projects/jquery-throttle-debounce-plugin/

それをページに追加してから、コードを次のように変更します。

$("#file").on("click", $.debounce(500, true, function(event){
    event.preventDefault(); // return false doesn't work with debounce
    // create tree
}));

これにより、トリガーされた回数に関係なく、関数が 1 回 (初回) だけ呼び出されます。関数は、トリガーがない状態で 500 ミリ秒一時停止した後にのみ再度実行されます。

ここに簡単なデモがあります: http://jsfiddle.net/ycpgz/

于 2013-09-19T19:48:57.537 に答える