1

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

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

        }   
    });
});

非常感谢您的回答!

4

4 回答 4

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

这是一种快速的方法,但会创建一些全局变量。它应该让你走上正确的道路!

开关可能会帮助您跟踪所需的所有不同情况。

于 2013-01-24T10:38:56.400 回答
0

您可以尝试绑定clickdblclick功能。请参阅文档并注意这一点:

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

来源

于 2013-01-24T10:34:46.533 回答
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 ();
  }
}
于 2013-01-24T10:35:15.803 回答
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);
});
于 2013-01-24T10:35:54.120 回答