我有这样的代码:
$("#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');
但这似乎没有做任何事情。非常感谢任何建议!
答案 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
中,但它可能会崩溃吗?无论如何不加载。