我确信我不是第一个找这个,但我找不到解决问题的方法..
我正在寻找一种方法,只有在经过3秒的维持点击后才能发起事件。 我尝试使用带有mouseup / mousedown Jquery事件的javascript setInterval()函数,但它没有用。
有人有想法吗?
我有一个div,我按住鼠标按钮3秒钟,然后会触发一些东西。 每次必须重新初始化3秒计时器。
答案 0 :(得分:11)
调用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);
}
});
答案 1 :(得分:1)
在鼠标按下时,将来设置超时3秒。
在鼠标向上时,清除超时。
答案 2 :(得分:1)
似乎mouseup
/ mousedown
个事件和setTimeout
/ clearTimeout
是的方式:
var timer = null;
$(selector).on('mousedown', function(ev) {
timer = setTimeout(function() {
timer = null;
/* Do something */
}, 3000);
}.on('mouseup', function(ev) {
if (timer) {
clearTimeout(timer);
timer = null;
}
});
答案 3 :(得分:1)
$('#div').on('mousedown', function(){
mousetimer.down();
}).on('mouseup', function(){
mousetimer.cancel();
});
var mousetimer = {
timer: null,
timing: false,
down: function(){
if(!timing)
{
mousetimer.timing = true;
mousetimer.timer = setTimeout(function(){
mousetimer.trigger();
}, 3000);
}
},
trigger: function(){
alert('do something');
mousetimer.cancel();
},
cancel: function(){
mousetimer.timing = false;
clearTimeout(mousetimer.timer);
}
};
答案 4 :(得分:0)