在我的Backbone View中,我定义了这样的事件:
events : {
'click .elm' : 'select',
'dblclick .elm' : 'toggle'
},
select: function(e){
e.preventDefault();
console.log('single clicked');
}
toggle : function(e){
e.preventDefault();
console.log('double clicked');
}
我已将单击和双击事件侦听器绑定到同一元素.elm
。当我双击这个元素时,我得到了这个输出:
single clicked
single clicked
double clicked
尝试preventDefault()
和stopImmediatePropagation()
并且没有解决问题。
那么,当我双击时,如何防止单击事件被触发?
答案 0 :(得分:7)
jQuery documentation特别推荐您正在做的事情:
不建议将处理程序绑定到同一元素的
click
和dblclick
事件。触发的事件序列因浏览器而异,其中一些事件在click
之前接收到两个dblclick
事件,而其他事件仅在一个事件中接收。双击灵敏度(双击检测到的点击之间的最长时间)可能因操作系统和浏览器而异,并且通常可由用户配置。
您所看到的正是预期的结果(当然取决于浏览器)。解决问题的唯一方法是设置计时器并手动区分单击和双击自己;然后你将不得不调整计时器值并检查各种浏览器和操作系统,直到你得到一些假装在大多数地方工作的东西。
我强烈建议您使用单击操作代替单独的控件。双击是非常不友好的时期,我们只是忍受它,因为我们已经习惯了。
答案 1 :(得分:5)
这不是Backbone本身的问题。 它是关于如何在同一个按钮上处理单击和双击事件。
见
答案 2 :(得分:0)
尝试在select& amp;末尾添加return false;
切换。