2014-02-14 141 views
0

對不起,誤導性的標題很難解釋!防止功能運行大量點擊

基本上我有一個功能,當你點擊左/右div移動X像素的方式。

// Upcoming events slide 
$('.nextEvent').click(function(e){ 
    e.preventDefault(); 
    if($('.newsColWrap').offset().left == '597.5'){ 

    } else { 
     $('.newsColWrap').stop(true,true).animate({'left' : "-=435px"},500) 
    } 
}); 
$('.prevEvent').click(function(e){ 
    e.preventDefault(); 
    if($('.newsColWrap').offset().left == '1032.5'){ 

    } else { 
     $('.newsColWrap').stop(true,true).animate({'left' : "+=435px"},500); 
    } 
}); 

功能工作正常,但是如果動畫正在發生的事情,你再次點擊,因爲如果語句不回我的div移動太遠,這是否有道理?

回答

2

在再次設置動畫之前,您可以使用:animated檢查元素是否正在動畫。

$('.nextEvent').click(function(e){ 
    e.preventDefault(); 
    if($(this).is(':animated')) return; // check if currently being animated 
    // ... animate 
}); 

$('.prevEvent').click(function(e){ 
    e.preventDefault(); 
    if($(this).is(':animated')) return; // check if currently being animated 
    // ... animate 
}); 
1

的問題可能是您正在閱讀的前一個動畫完成所以儘量

$('.nextEvent').click(function (e) { 
    e.preventDefault(); 
    var $newsColWrap = $('.newsColWrap').stop(true, true); 
    if ($newsColWrap.offset().left == '597.5') { 

    } else { 
     $newsColWrap.animate({ 
      'left': "-=435px" 
     }, 500) 
    } 
}); 
$('.prevEvent').click(function (e) { 
    e.preventDefault(); 
    var $newsColWrap = $('.newsColWrap').stop(true, true); 
    if ($newsColWrap.offset().left == '1032.5') { 

    } else { 
     $newsColWrap.stop(true, true).animate({ 
      'left': "+=435px" 
     }, 500); 
    } 
}); 
+0

感謝@Arun抵消,這仍然允許我進行點擊然後移動div最右邊? – Liam

+0

@Liam在這種情況下嘗試techfoobar的答案 –

1

你可以使用一個簡單的setTimeout函數運行500