原则上尽量不要在同一DOM元素上绑定单击和双击事件,不可避免会相互影响。
我碰到的现象是:在同一DOM元素上绑定了click和dblclick(用的jquery),在firefox下,双击事件有时候会触发,有时候不行,猜想可能是单击事件的影响造成(在IE下面双击事件能触发)。百度了一些内容:IE对双击事件的处理和其它浏览器有些不同
IE下双击触发事件:
mousedown, mouseup, click, mouseup, dblclick
而在ff下:
mousedown, mouseup, click, mousedown, mouseup, click, dblclick
无奈之下,只有在用户单击的时候,记住一个状态,给一个定时器重置这个状态,如果在定时器重置状态之前又有click触发,就调用 双击事件处理函数
clickInterval = 600;
clicked = false;
clearTimeout(clickTimer);
clickTimer = setTimeout(function(){
//alert("clickTime:" + clickTime);
clicked = false;
//clickTime = 0;
}, clickInterval);
if (clicked)
//dblclicked event
clicked = true;
上面的代码在IE下面会有问题,因为IE在双击时,只触发了一次clicked(点击3次,IE下会有双击的效果),无奈之下,只有判断浏览器类型,然后绑定一个双击事件了。判断IE浏览器用jquery的$.browser.msie(返回true,false)