如何在jQuery中定义是常规点击还是双击同一个元素?
例如,我们有这样的元素:
<div id="here">Click me once or twice</div>
我们需要在常规单击和双击后执行不同的操作。
我试过这样的方法:
$("#here").dblclick(function(){
alert('Double click');
});
$("#here").click(function(){
alert('Click');
});
但是,当然,它不起作用,每次起作用的只有“点击”。
然后,有人给我看了这个:
var clickCounter = new Array();
$('#here').click(function () {
clickCounter.push('true');
setTimeout('clickCounter.pop()', 50);
if (clickCounter.length > 2) {
//double click
clickCounter = new Array(); //drop array
} else {
//click
clickCounter = new Array(); //drop array !bug ovethere
}
});
在这里,我们试图设置点击之间的间隔,然后跟踪两个连续的事件,但这有一个问题..它不工作了。
所以,有人知道如何做到这一点?或者有人可以分享一个链接到材料,在那里我可以阅读它?
2条答案
按热度按时间7gs2gvoe1#
从QuirksMode开始:
双击
dblclick事件很少使用。* 即使使用它,也不要在同一个HTML元素上同时注册onclick和ondblclick事件处理程序。如果同时注册了这两个事件处理程序,则几乎不可能了解用户实际执行了什么操作。*
毕竟,当用户双击一个元素时,一个click事件会在dblclick之前发生。此外,在Netscape中,第二个click事件也会在dblclick之前单独处理。最后,警报在这里也是危险的。
因此,请将单击和双击操作很好地分开,以避免复杂化。
(强调我)
pzfprimi2#
你在你的问题中所做的,正是它应该如何做。
它可以正常工作,这里有一个demo。
因为,你想检测单独的单双击。有一个git project。
它会累计事件以检测单次双击。
希望它现在对你有帮助。