Javascript 在jQuery中,它是如何定义的:定期单击同一元素还是双击?

Javascript 在jQuery中,它是如何定义的:定期单击同一元素还是双击?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我如何在jQuery中定义它是定期单击同一元素还是双击 例如,我们有如下元素: <div id="here">Click me once or twice</div> 但是,当然,它不起作用,每次只“点击”起作用 然后有人给我看了这个, var clickCounter = new Array(); $('#here').click(function () { clickCounter.push('true'); setTimeout('clickCounter.pop

我如何在jQuery中定义它是定期单击同一元素还是双击

例如,我们有如下元素:

<div id="here">Click me once or twice</div>
但是,当然,它不起作用,每次只“点击”起作用

然后有人给我看了这个,

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
}
});
在这里,我们试图设置单击之间的间隔,然后跟踪两个连续事件,但这有一个问题。。它也不起作用。
有人知道怎么做吗?或者有人可以分享到该材料的链接,在那里我可以阅读该材料?

来自:

Dblclick

dblclick事件很少使用。即使你使用它,你也应该 确保从不同时注册onclick和ondblclick事件处理程序 在相同的HTML元素上。了解用户实际做了什么 如果两个都注册,这几乎是不可能的

毕竟,当用户双击一个元素时,会发生一次单击事件 在dblclick之前发生。此外,在Netscape中,第二次单击 事件也在dblclick之前单独处理。最后是警报 这里也很危险

因此,请将单击和dblclicks分开,以避免 并发症

(强调矿山)

来自:

Dblclick

dblclick事件很少使用。即使你使用它,你也应该 确保从不同时注册onclick和ondblclick事件处理程序 在相同的HTML元素上。了解用户实际做了什么 如果两个都注册,这几乎是不可能的

毕竟,当用户双击一个元素时,会发生一次单击事件 在dblclick之前发生。此外,在Netscape中,第二次单击 事件也在dblclick之前单独处理。最后是警报 这里也很危险

因此,请将单击和dblclicks分开,以避免 并发症


(我的重点)

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

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

$(".test").dblclick(function() {
      $("body").append("you doubleclicked me<br />");
});
它将事件相加以检测单个双击


希望它现在能对你有所帮助。

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

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

$(".test").dblclick(function() {
      $("body").append("you doubleclicked me<br />");
});
它将事件相加以检测单个双击


希望现在对您有所帮助。

这是个坏主意。。。这是可以做到的,但使用超时->我建议您找到一种更好的方法来处理单个元素上的两个不同事件在全局上下文中保留单击之间的时间,并检查单击函数中的时间是否小于X,如果时间在范围内,则单击函数返回false。这是一个坏主意。。。可以这样做,但使用超时->我建议您找到一种更好的方法来处理单个元素上的两个不同事件在全局上下文中保留单击之间的时间,并检查单击函数中的时间是否小于X,如果时间在范围内,则单击函数返回false。+1试图查找“官方”像这样的定义。。。混合这两个元素从来都不是一个好主意…谢谢你的建议,但我仍然需要这样做,因为如果有人在我的元素上点击太快,动画没有时间完成迭代,而且看起来很糟糕。然后,至少我需要在第一次单击之后放置间隔。例如,在第一次单击后,使其无法再次单击项目1秒钟。这可能吗?非常感谢,伙计们,这解决了我的问题+我试图找到一个这样的“官方”定义。。。混合这两个元素从来都不是一个好主意…谢谢你的建议,但我仍然需要这样做,因为如果有人在我的元素上点击太快,动画没有时间完成迭代,而且看起来很糟糕。然后,至少我需要在第一次单击之后放置间隔。例如,在第一次单击后,使其无法再次单击项目1秒钟。这可能吗?非常感谢,伙计们,这解决了我的问题!不确定这是否正是我所需要的,因为在评论中人们说它不想使用jQuery.live()事件,我必须使用它:)但是谢谢,让我检查一下,不确定这是否正是我所需要的,因为在评论中人们说它不想使用jQuery.live()事件,我必须使用它:)但是谢谢,让我检查一下
$("button").single_double_click(function () {
  alert("Try double-clicking me!")
}, function () {
  alert("Double click detected, I'm hiding")
  $(this).hide()
})