2013-02-04 137 views
0

我有這樣的代碼: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'); 

但是,這似乎並沒有做任何事情。任何建議將非常感激地收到!

回答

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剛剛,但它可能崩潰?不加載不管。

+0

對不起,這麼晚回來。這是行不通的,我仍然得到多次閃爍。 – John