[英]How can I trouble shoot click events being triggered twice?
我無法弄清楚從哪里開始尋找。
這是JS:
$('.classy').on('click', 'button', function(){
console.log('clicked');
})
我需要一些幫助來弄清楚如何解決這個問題。 我知道我沒有提供足夠的信息來獲得真正的答案。 對我來說令人困惑的部分是,這只發生在觸摸設備上。 如果我不小心綁定了兩個事件或創建了同一視圖的兩個實例,那么鼠標點擊也不會發生這種情況嗎?
謝謝。
編輯:我嘗試通過jQuery Mobile使用tap事件。 這有一個奇怪的反應。 它會觸發一次事件,看起來就像是完成了,但是當你下次觸摸屏幕上的任何地方時,它會再次觸發事件。 ......奇怪,有什么想法嗎?
我終於找到了問題。 它來自分層的iScrolls。 我不得不在這一點上破解lib,可能是解決這個問題的更好方法,但說明了這一點。
if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA' && window.iScrollClickFIX != true) {
window.iScrollClickFIX = true;
setTimeout(function(){
window.iScrollClickFIX = false;
}, 1)
感謝大家的幫助。
這可能不是實際的解決方案......只是想一想
$('.classy').die('click').on('click', 'button', function(){
console.log('clicked');
})
嘗試將綁定更改為mousedown
而不是click
?
(假設你正在使用click
)
也許還有另一個父元素,您也分配了一個單擊處理程序。 試試這個,以防止點擊(或任何其他事件)冒泡DOM:
$('.classy').on('click', 'button', function(e){
console.log('clicked');
e.stopPropagation();
})
我要做的第一件事就是在Chrome / IE / Firefox中使用調試器設置斷點,以確保綁定不會發生兩次。
或試試這個:
$('.classy').off('click').on('click', 'button', function(){
console.log('clicked');
})
你可以使用jquery的一個函數而不是點擊來擺脫雙擊問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.