我确定我不是第一个寻找这个问题的人,但是我没有找到解决问题的办法。

我正在寻找一种只有在保持3秒钟的点击之后才能触发事件的方法。
我尝试将javascript setInterval()函数与mouseup / mousedown jQuery事件一起使用,但没有用。

有人有主意吗?

我有一个div,按住鼠标键3秒钟,就会触发某些事件。
每次必须重新初始化3秒计时器。

最佳答案

调用setTimeout()在3000毫秒后执行操作,将setTimeout()中的标识符存储到函数上方的变量中。在元素的mouseup()上,通过clearTimeout()清除超时(如果存在)。

var divMouseDown;
$('#div-id').mousedown(function() {
  divMouseDown = setTimeout(function() {
     // Do timeout action...
  }, 3000);
});
$('#div-id').mouseup(function() {
  if (divMouseDown) {
    clearTimeout(divMouseDown);
  }
});

07-26 01:30