如何定义jQuery是定期点击相同的元素还是双击?

时间:2012-03-05 16:10:55

标签: javascript jquery javascript-events

我如何在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 个答案:

答案 0 :(得分:4)

来自QuirksMode

  

<强>双击自动

     

很少使用dblclick事件。 即使你使用它,你应该是   确保永远不会同时注册onclick和ondblclick事件处理程序   在相同的HTML元素上。找出用户实际做了什么   如果您同时注册两者,几乎是不可能的。

     

毕竟,当用户双击元素时单击一下事件   在dblclick之前发生。此外,在Netscape第二次点击   事件也在dblclick之前单独处理。最后,提醒   这里也很危险。

     

因此,请将您的点击和dblclicks分开以避免   并发症。

(强调我的)

答案 1 :(得分:0)

你在问题​​中所做的是,应该如何做。

$(".test").click(function() {
      $("body").append("you clicked me<br />");
});

$(".test").dblclick(function() {
      $("body").append("you doubleclicked me<br />");
});

它有效,这里是demo


因为,您想要检测单独的双击。这有一个git project

$("button").single_double_click(function () {
  alert("Try double-clicking me!")
}, function () {
  alert("Double click detected, I'm hiding")
  $(this).hide()
})

它会添加事件以检测单次双击。

希望它能帮到你。