Javascript 根据按住鼠标的时间触发不同的事件

Javascript 根据按住鼠标的时间触发不同的事件,javascript,jquery,Javascript,Jquery,我想根据鼠标被按住的时间触发不同的事件。如果鼠标停留时间少于第二次触发事件1。如果为第二次触发事件2而按住它。如果按住两秒钟,则触发事件3,以此类推 我有一个JavaScript,它会显示显示鼠标按下时间的消息,但如果用户继续按住鼠标两秒钟,我不确定如何防止在一秒钟后显示消息 var mousedown = false; var mousedown_timer = ''; $('#button').mousedown(function(e) { mousedown = true; $('

我想根据鼠标被按住的时间触发不同的事件。如果鼠标停留时间少于第二次触发事件1。如果为第二次触发事件2而按住它。如果按住两秒钟,则触发事件3,以此类推

我有一个JavaScript,它会显示显示鼠标按下时间的消息,但如果用户继续按住鼠标两秒钟,我不确定如何防止在一秒钟后显示消息

var mousedown = false;
var mousedown_timer = '';
$('#button').mousedown(function(e) {
  mousedown = true;
  $('#log').text('mousedown...');
  mousedown_timer = setTimeout(function () {
      if(mousedown) {
        $('#log').text('1 second');
      }
  }, 1000);
  mousedown_timer = setTimeout(function () {
    if(mousedown) {
        $('#log').text('2 second');
    }
  }, 2000);
}).mouseup(function(e) {
mousedown = false;
clearTimeout(mousedown_timer);
$('#log').text('aborted');
});
是否有一种方法可以移动计时器来检测mouseup函数中经过的时间


是一把小提琴。

以下是我的做法:

var mousedownTimestamp;
$('#button').mousedown(function(e) {
  mousedownTimestamp = new Date();
}).mouseup(function(e) {
  var mouseupTimestamp = new Date();
  var difference = mouseupTimestamp - mousedownTimestamp;
  if (difference < 1000) {
     // event 1
  } else if (difference >= 1000 && difference < 2000) {
     // event 2
  } else if (difference >= 2000) {
     // event 3
  }
});
var mousedown时间戳;
$(“#按钮”).mousedown(函数(e){
mousedownTimestamp=新日期();
}).mouseup(函数(e){
var mouseupTimestamp=新日期();
var差=mouseupTimestamp-mousedown时间戳;
如果(差值<1000){
//事件1
}否则如果(差值>=1000&&差值<2000){
//事件2
}否则如果(差异>=2000){
//事件3
}
});

只是想知道。我不认为这是大多数人在网页上的直觉行为。当他们使用你的网站时,他们会知道这个功能吗?我想知道,通过实现定时鼠标向下/向上类型的功能,您试图解决的真正问题是什么?我想,如果人们不知道后果(如果不明显的话)而不小心延迟鼠标,这实际上会让他们感到沮丧。不过这只是我的意见。想一想触发事件2会有多难。这并不是一个传统的网页。我正在用网络音频api制作一个分步序列器。按下按钮的长度用于确定添加到序列中的音符的长度。