2013-11-27 27 views
0
previous.click(function(){ 
    if ((parseInt($('.slider-box').css('margin-left'))) < 0) { 
    $('.slider-box').animate({'margin-left':'+='+rubrikWidth}); 
    } 
}); 

該代碼執行一個滑塊向右移動,如果一個按鈕被點擊和保證金,左邊是單擊事件但是,當你點擊快速和頻繁,if的子句計算爲減慢,然後可以將滑塊移動到很遠。 我想防止點擊太快的按鈕。 有沒有辦法做到這一點: 點擊 - >執行事件 - >執行完成後,您可以再次點擊。防止JavaScript的執行,如果沒有準備好

回答

1

您可以簡單地使用animate回調。這應該做到這一點,假設.slider-box只匹配一個元素:

previous.click(function(){ 
    var slider = $('.slider-box'); 
    if (!slider.data('busy') && (parseInt(slider.css('margin-left'))) < 0) { 
    slider.data('busy', true).animate({'margin-left':'+='+rubrikWidth}, function() { 
     slider.data('busy', false); 
    }); 
    } 
}); 
+0

這對我來說非常適合!謝謝 – Killerbear

0

如果動畫是通過檢查運行,您可以查詢:

$('.slider-box').queue('fx').length

,並使用preventDefault如果隊列的長度超過零