[英]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.