0

私はこのようなコードを持っています:

$("#ajax_stuff").load("/site/method", $('.myselector').serializeArray()).delay(100).fadeOut('slow').delay(20).fadeIn('slow');

そして基本的に、誰かがチェックボックスのリストのチェックボックスをクリックするたびにトリガーされます。誰かが続けて 20 個のチェックボックスをすばやくクリックすると、その効果が 20 回繰り返されます。

理想的には、最後にクリックしたボックスに対して 1 つの効果を実行してから停止したいだけです。

私はもう試した

$("#ajax_stuff").load("/site/method", $('.myselector').serializeArray()).stop(true,true).delay(100).fadeOut('slow').delay(20).fadeIn('slow');

しかし、それは何もしないようです。どんなアドバイスでも大歓迎です!

4

1 に答える 1

0
var delay = (function () {
 var timer = 0;
 return function(callback, ms){
 clearTimeout (timer);
 timer = setTimeout(callback, ms);
      };
    })();
$(function(){
    $("/*CHECKBOX SELECTOR*/").on("click",function(){
        delay((function(){
                      $("#ajax_stuff").load("/site/method", $('.myselector').serializeArray()).stop(true,true).delay(100).fadeOut('slow').delay(20).fadeIn('slow');}),1000);
});
});

この場合、 setTimeout はあなたの友達だと思います。チェックボックスのクリックでは使用していませんが、イベントハンドラーをクリックから選択などに変更する必要があるかもしれません。今入れてみたjsfiddleけど、もしかして壊れてる?関係なくロードされません。

于 2013-02-04T12:19:53.607 に答える