Backbone.js - 在元素上触发单击和双击事件

Vee*_*era 10 javascript javascript-events backbone.js

在我的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');
}
Run Code Online (Sandbox Code Playgroud)

我已将单击和双击事件侦听器绑定到同一元素.elm.当我双击这个元素时,我得到这个输出:

single clicked single clicked double clicked

尝试preventDefault()stopImmediatePropagation()并没有解决不了的问题.

那么,当我双击时,如何防止单击事件被触发?

mu *_*ort 7

jQuery文档特别建议对你在做什么:

将处理程序绑定到同一元素的clickdblclick事件是不可取的.触发的事件序列因浏览器而异,其中一些click事件在接收之前接收两个事件dblclick而其他事件仅接收一个事件.双击敏感度(双击检测到的点击之间的最长时间)可能因操作系统和浏览器而异,通常可由用户配置.

你所看到的正是预期的结果(当然取决于浏览器).解决问题的唯一方法是设置计时器并手动区分单击和双击自己; 那么你将不得不调整计时器值并检查各种浏览器和操作系统,直到你得到一些假装在大多数地方工作的东西.

我强烈建议您使用单击操作代替单独的控件.双击是非常不友好的时期,我们只忍受它,因为我们已经习惯了.


Pra*_*mod 5

这不是Backbone本身的问题.它是关于如何在同一个按钮上处理单击和双击事件.

看到

  1. 检测到双击事件时需要取消单击/鼠标事件

  2. 使用jQuery的Javascript:单击并双击相同的元素,不同的效果,一个禁用另一个

更新:但如果您不必处理它会更好.看下面的mu太短了!