1

だから、私はこの小さな機能を持っています:

carousel_controls_buttons.live('click', function(e){
    setTimeout(function(){
       info_board_span.append(info_board_description);
       e.preventDefault();
    }, 450);
});

私がやろうとしているのはinfo_board_description、2、3回の高速クリックの後に1回以上追加を停止することです。これを行うと、このデータが複数回追加され、コンテンツが重複します。どうすればこれをしばらく停止できますか、これは450msですか?ヘルプのためのThx。

4

5 に答える 5

3

ブール値を使用して制御します。

var flag = true;
carousel_controls_buttons.live('click', function(e){
    e.preventDefault();
    if (flag) {
       setTimeout(function(){
           info_board_span.append(info_board_description);
           flag = true;
       }, 450);
       flag = false;
    }
});
于 2013-01-23T08:57:09.193 に答える
2

関数を使用できclearTimeoutます:

var t = '';
carousel_controls_buttons.live('click', function(e){
    clearTimeout(t);
    t = setTimeout(function(){
          info_board_span.append(info_board_description);
          e.preventDefault();
    }, 450);
});

例: http://jsfiddle.net/xhSvC/

livemethod は非推奨であることに注意してくださいon。代わりに method を使用する必要があります。

于 2013-01-23T09:00:02.027 に答える
1

debounce他の答えはうまくいくはずですが、 &の概念を紹介したいと思いますthrottle

http://benalman.com/projects/jquery-throttle-debounce-plugin/は、必要なことを達成するために使用できるプラグインの 1 つです。つまり、関数が x 秒に 1 回だけ実行されるようにします。

スロットル対デバウンス

スロットリングとデバウンスの両方が関数の実行レートを制限しますが、どちらが特定の状況に適していますか?

簡単に言えば、スロットリングは関数の実行を遅延ミリ秒ごとに 1 回までに制限しますが、デバウンスは関数が 1 回だけ実行されることを保証します (指定されたしきい値が与えられた場合)。

carousel_controls_buttons.live('click', function(e) {
    $.debounce(450, function() {
       info_board_span.append(info_board_description);
       e.preventDefault();
    });
});
于 2013-01-23T08:59:13.807 に答える
0

これを達成するための 1 つのイベントがあります。

carousel_controls_buttons.one('click', function() {
  setTimeout(function(){
       info_board_span.append(info_board_description);
       e.preventDefault();
    }, 450);
});
于 2013-01-23T08:58:24.057 に答える
0

そこにカウントを入れて、var count=0; と言います。ヒットするとインクリメントし、count==1 の場合は条件をチェックします。そのままにしない場合は追加します

于 2013-01-23T08:56:23.143 に答える