[英]How do I unbind or prevent other click events from occurring while my function is running?
[英]How to prevent other click events from running while one of them is already running in jQuery?
我正在使用previous
和next
按鈕編寫一個簡單的淡入淡出幻燈片。
問題在於,當我非常快地單擊next
按鈕(例如2次)時,在第一個事件完成之前,將執行第二個按鈕,因此我將在不到一秒鍾的時間內看到頁面中的兩個圖像。
$("#next_button").click(function (){
$("#slide"+current_slide).fadeOut(FADE_DURATION, function () {
current_slide ++;
current_slide = current_slide % slides_number;
$("#slide"+current_slide).fadeIn(FADE_DURATION, function (){
$(".slide_image").not("#slide"+current_slide).attr("style", "display: none;");
});
});
});
在最后一行中,在fadeIn()
,我什至試圖隱藏除當前圖像以外的所有內容,希望問題會得到解決,但這是行不通的。
我讀了一些有關event.stopImmediatePropagation()
但我無法使用它,或者這不是我的解決方案。
在這些相同事件之一完成之前,如何強制jQuery
忽略執行任何類似事件?
您可以添加一個標志,指示滑塊何時處於過渡狀態:
var isSliding = false;
$("#next_button").click(function (){
if(isSliding) {
return false;
}
isSliding = true;
$("#slide"+current_slide).fadeOut(FADE_DURATION, function () {
current_slide ++;
current_slide = current_slide % slides_number;
$("#slide"+current_slide).fadeIn(FADE_DURATION, function (){
$(".slide_image").not("#slide"+current_slide).attr("style", "display: none;");
isSliding = false;
});
});
});
您可以綁定和解除綁定,但是如果重復很多次,這很費時間,如果您多次重復嘗試,請嘗試查看此答案: jQuery-在事件發生后如何臨時禁用onclick事件監聽器被解雇了?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.