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

Javascript Backbone.js-在元素上触发单击和双击事件,javascript,javascript-events,backbone.js,Javascript,Javascript Events,Backbone.js,在我的主干视图中,我定义了如下事件: events : { 'click .elm' : 'select', 'dblclick .elm' : 'toggle' }, select: function(e){ e.preventDefault(); console.log('single clicked'); } toggle : function(e){ e.preventDefault(); console.log('double clicke

在我的主干视图中,我定义了如下事件:

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
。当我双击此元素时,我得到以下输出:

单击一次
单击一次
双击

尝试了
preventDefault()
stopImmediatePropagation()
,但没有解决问题


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

尝试添加
返回false在选择和切换的末尾。

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

  • 更新:但如果你不必处理它,那就更好了。看下面

    特别建议您不要这样做:

    不建议将处理程序绑定到同一元素的
    click
    dblclick
    事件。触发的事件顺序因浏览器而异,一些浏览器在
    dblclick
    之前接收两个
    单击事件,而另一些浏览器仅接收一个。双击灵敏度(检测为双击的最大点击间隔时间)可能因操作系统和浏览器而异,并且通常是用户可配置的

    您看到的正是预期的(当然取决于浏览器)。解决问题的唯一方法是设置一个计时器并手动区分单击和双击;然后,你必须调整计时器的值,检查各种浏览器和操作系统,直到你得到一些在大多数情况下都能正常工作的东西


    我强烈建议您使用单独的控件来执行单击操作。双击是非常不友好的时期,我们只是因为习惯了而忍受它。

    hmm。然后我必须更改我的应用程序行为。