2012-07-30 58 views
3

我想限制jQuery Click Event。jquery:如何自定義CLICK事件?

問題:如果你按下任何鍵......並點擊鼠標:點擊被觸發。 。

對於JS的遊戲開發者,我寧願:

如果任何鍵被按下......你點擊:點擊不會觸發

如何準備取消$.event.special.click的絕對並嚴格「只用鼠標」點擊?

回答

4

這可以簡單地通過使用semaphore,例如旋轉鎖來完成。

這是通過在keydown被按下時遞增鎖來實現的。發生鍵鎖時,將該鎖設置爲0.在單擊事件內部,測試以查看鎖是否爲0.如果不是,則不要發出點擊操作。

var SpinningLock = 0; 

$('#target').keydown(function() { 
    SpinningLock++; 
}); 

$('#target').keyup(function() { 
    SpinningLock = 0; 
}); 

$('#target').click(function() { 
    if(SpinningLock > 0) return; 
    //TODO: implement click action 
}); 
+0

我給了你一個加號,但這不是一個信號量,它是一個全局標誌。 – Hogan 2012-07-30 00:20:35

+0

@Hogan - 我一直將旋轉鎖視爲信號量(二進制信號量)的最簡單版本。但是,這個實現的確使用了全局變量(以計數標誌的形式),並且不像多線程環境中的真正信號量那樣複雜。 – 2012-07-30 00:31:00

+0

不是真的 - 即使是二進制信號量控制從多個線程訪問資源並且是一個鎖,您在此處沒有鎖定代碼並且正在使用單個線程,您只需擁有一個標誌。 – Hogan 2012-07-30 10:03:58