Mousedown Timer使用JavaScript / jQuery

时间:2011-05-22 21:50:04

标签: javascript jquery mousedown

我如何知道用户按住鼠标按钮的时间长度(网页上的任何位置)?我想在用户按住鼠标按钮至少2-3秒时执行一个功能(最好在此过程中取消鼠标按下)。这可能吗?

4 个答案:

答案 0 :(得分:14)

你走了:

$(window).mousedown(function(e) {
    clearTimeout(this.downTimer);
    this.downTimer = setTimeout(function() {
        // do your thing 
    }, 2000);
}).mouseup(function(e) {
    clearTimeout(this.downTimer);
});

现场演示: http://jsfiddle.net/simevidas/Pe9sq/2/

答案 1 :(得分:1)

我可以使用jQuery和$("body").mousedown(function(){})来试验$("body").mouseup(function(){})。我想你可以启动一个定时器,它将在2至3秒内调用功能。如果发生mouseup事件,则可以取消计时器。您可以使用简单的脚本对其进行测试,但您可能必须查看可能发生click的情况,因为页面上单击了链接或按钮。但作为一个起点,我将尝试$("body").mousedown$("body").mouseup。如果我有机会,我会看看是否可以发送代码示例。

答案 2 :(得分:0)

试试这个:

function WhateverYoudLikeToExecWithinNext3Seconds(){
    // Code goes here.
}

element.addEventListener('mousedown', function(){
    setTimeout(function(){WhateverIdLikeToExecWithin3Seconds();}, 3000);
}, false);

答案 3 :(得分:0)

看看这个。 http://jsfiddle.net/b1Lzo60n/

Mousedown启动一个计时器,检查鼠标是否在1秒后仍然处于停机状态。

<button id="button">Press me</button>
<div id="log"></div>

代码:

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);
}).mouseup(function(e) {
    mousedown = false;
    clearTimeout(mousedown_timer);
    $('#log').text('aborted');
});