我有一个小问题,是否有任何选项可以检测点击间隔并为它们设置任何条件。例如,如果我在一秒间隔内逐个点击,我可以做一些事情,如果我在0.5秒之后再次点击,我可以制作别的东西吗?我不知道如何写这个,所以我不能在我的代码上添加任何例子只有这个愿景,我也找不到其他的解决方案,你能帮助我吗?
var clicks=0;
function myClickFunction(event){
clicks++;
}
$(function(){
$("#something").on("click",myClickFunction);
if (click == )){
}
});
});
很多答案!
答案 0 :(得分:1)
var lastClickTime;
function testTime(time){
switch (true) {
case (time < 500):
alert("less than 500ms!");
break;
case (time < 1000):
alert("less than 1000ms but not 500ms!");
break;
default:
alert("you sure click slow!");
break;
}
}
$("#something").on("click", function(e){
e.preventDefault();
var newTime = new Date();
if(lastClickTime !== undefined) {
testTime(newTime - lastClickTime);
}
lastClickTime = newTime;
});
这是一种快速的方法,但会创建一些全局变量。它应该让你走上正确的道路!
开关可以帮助您跟踪所需的所有不同情况。
答案 1 :(得分:0)
您可以尝试绑定click
和dblclick
函数。请参阅docs并注意:
注意:虽然在下一个例子中进行了演示,但是不建议使用 将处理程序绑定到click和dblclick事件 元件。触发的事件序列因浏览器而异 浏览器,有些人在dblclick和之前接收了两个点击事件 其他人只有一个。双击灵敏度(点击之间的最长时间 被检测为双击)可能因操作系统而异 浏览器,通常是用户可配置的。
答案 2 :(得分:0)
您必须手动跟踪最后一次点击的时间。然后,每次调用事件处理程序时,将当前时间与存储的时间进行比较。
一些伪代码:
last_click_time = 0
onClick () {
if ( last_click_time == 0 ) {
// first click
last_click_time = time.now();
} else {
time_difference = time.now () - last_click_time;
if ( time_difference == 0.5 ) {
// half a second since last click
} else if ( time_difference == 1 ) {
// one second since last click
}
...
last_click_time = time.now ();
}
}
答案 3 :(得分:0)
如果您想要精确控制时序,您可以检查当前机器上的毫秒数。
<强> HTML 强>
<a id="asd">yo</a>
<强>使用Javascript:强>
$("#asd").click(function(){
var latest = $(this).data("time") || 0;
var now = +new Date();
var diff = now-latest;
if(diff < 500) alert("That was faster than 0.5 seconds!");
if(diff > 1000 && diff < 1500) alert("That was between 1.0 and 1.5 seconds.");
$(this).data("time",now);
});