如何使用jQuery逐个检测单击间隔?

时间:2013-01-24 10:30:28

标签: javascript jquery click timeout

我有一个小问题,是否有任何选项可以检测点击间隔并为它们设置任何条件。例如,如果我在一秒间隔内逐个点击,我可以做一些事情,如果我在0.5秒之后再次点击,我可以制作别的东西吗?我不知道如何写这个,所以我不能在我的代码上添加任何例子只有这个愿景,我也找不到其他的解决方案,你能帮助我吗?

var clicks=0;
function myClickFunction(event){
    clicks++;
}
$(function(){
    $("#something").on("click",myClickFunction);
        if (click == )){

        }   
    });
});

很多答案!

4 个答案:

答案 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)

您可以尝试绑定clickdblclick函数。请参阅docs并注意:

  

注意:虽然在下一个例子中进行了演示,但是不建议使用   将处理程序绑定到click和dblclick事件   元件。触发的事件序列因浏览器而异   浏览器,有些人在dblclick和之前接收了两个点击事件   其他人只有一个。双击灵敏度(点击之间的最长时间   被检测为双击)可能因操作系统而异   浏览器,通常是用户可配置的。

Source

答案 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)

如果您想要精确控制时序,您可以检查当前机器上的毫秒数。

Link to fiddle

<强> 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);
});