单击Jquery动画,在多次单击时停止重复

时间:2013-02-04 12:10:24

标签: javascript jquery

我有这样的代码:

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

基本上,每次有人点击复选框列表中的复选框时都会触发。如果有人连续快速点击20个复选框,效果会重复20次。

理想情况下,我只是希望它为他们点击的最后一个框做一个效果然后停止。

我试过

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

但这似乎没有做任何事情。非常感谢任何建议!

1 个答案:

答案 0 :(得分: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中,但它可能会崩溃吗?无论如何不加载。