2012-11-08 48 views
9

在我的骨干观炒鱿鱼,我已经定义了这样的活动: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 clicked'); 
} 

我已绑定单并双击事件监听器相同的元素.elm 。当我双击此元素上,我得到这个输出:

single clicked single clicked double clicked

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

那么,我怎样才能防止单击事件被激发,当我双击?

回答

0

尝试在选择&切换的末尾添加return false;

6

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

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

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

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

+0

嗯。然后我必须改变我的应用程序行为。 – Veera