簡體   English   中英

在我的函數運行時如何解除綁定或阻止其他單擊事件發生?

[英]How do I unbind or prevent other click events from occurring while my function is running?

我有一個旋轉木馬設置,我點擊事件綁定到導航箭頭。 單擊它們時,我使用jQuery動畫在下一個輪播幻燈片的元素中進行動畫處理,由於動畫的性質,我使用setTimeout()幾次。

我有一個錯誤,如果我單擊一個箭頭,然后快速單擊上一個或下一個箭頭,動畫將因為超時(這個項目中必需的)而混淆,並且在屏幕上不呈現任何內容。 我已經看了一段時間了,我認為最好的方法可能是防止其他箭頭在當前動畫完成之前被點擊。

每個箭頭都是通過click而不是on:('click', function() ...等控制的:

$("#arrow1").click(function() {...}

我看了看

$("element").off("click");

但由於他們沒有使用'on'方法附加,我認為這不會起作用。

我想要的東西:

$("#arrow1").click(function() {
 $("#arrow2, #arrow3, #arrow4").off("click");
 // do my animations, then
 $("#arrow2, #arrow3, #arrow4").on("click");
}

但我還沒有能夠讓它工作。

.off.on你期望不工作。 .click方法和其他事件方法使用.on幕后方法結合的處理程序。 在沒有任何特定處理程序的情況下調用.off方法時,它會刪除 (而不是臨時禁用)特定事件的所有綁定處理程序。 並且.on不傳遞處理程序的情況下調用.on無效。

在您的情況下,您可以使用標志而不是操縱事件處理程序,這也比(重新)綁定和刪除事件處理程序更有效。

你可以使用unbind函數

$("#arrow1").click(function() {
 // $("#arrow2, #arrow3, #arrow4").off("click");
 $("#arrow2, #arrow3, #arrow4").unbind("click");
 // do my animations, then
 $("#arrow2, #arrow3, #arrow4").on("click");
}

http://api.jquery.com/unbind/

嘗試使用unbind()函數,它應該刪除事件。

描述:從元素中刪除以前附加的事件處理程序。

$("#arrow1").unbind( "click" );

off()函數也應該起作用。

描述:刪除事件處理程序。

$("#arrow1").off( "click" );

希望這可以幫助。

我要做的是從頭開始設置一個布爾值isLoading = false。 然后在函數執行時設置:

isLoading = true。 如果isLoading == true,$('button')。attr('disabled','disabled'); 否則啟用它

完成后,將其更改回false。

對不起,這是psudo代碼,它只是我的頭腦。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM