jQuery - 在mousedown上触发常规函数调用

时间:2011-03-16 15:52:02

标签: javascript jquery events timer onmousedown

我希望在给定间隔内定期调用函数,同时按住鼠标左键在特定元素上。有没有一种简单的方法在jQuery中执行此操作,还是应该使用vanilla javascript和setInterval / setTimeout?

由于

4 个答案:

答案 0 :(得分:2)

这是一个提供mousehold事件的jQuery插件。

http://remysharp.com/2006/12/15/jquery-mousehold-event/

如果您转到 demo page 并点击最后一个输入框右侧的其中一个箭头,您将看到它是如何工作的。

答案 1 :(得分:2)

我就是这样做的:

HTML:

<div id="box"></div>

JavaScript的:

var box = $('#box'),
    iv;

function foo() {
    box.append('*');    
}

box.bind('mousedown mouseup', function(e) {
    $(this).toggleClass('hold', e.type === 'mousedown');
});

iv = setInterval(function() {    
    box.hasClass('hold') && foo();
}, 1000);

因此,您将处理程序绑定到mousedownmouseup事件,并相应地设置hold CSS类。同时,独立计时器iv将检查hold类是否已设置,并相应地调用您的函数(foo)。

现场演示: http://jsfiddle.net/simevidas/7CUFE/

答案 2 :(得分:0)

jQuery没有提供任何观看支持的功能,你可以使用vanilla setTimeout函数,如下所示:

var timer;

function functionToRun() {
    // Function code here...
    functionToRun();
}

var inFunction = function() {
    timer = window.setTimeout(functionToRun, intervalToRunFor);
}

var outFunction = function() { 
    window.clearTimeout(timer);
}

$('selector').hover(function() { inFunction, outFunction }

答案 3 :(得分:0)

var mouseDown = false;

$('#yourID').bind('click', function() {
    mouseDown = true;
});

$('#yourID').bind('mouseup', function() {
    mouseDown = false;
});

setInterval('checkOut();',5000);

function checkOut() {
   if(mouseDown) alert('mouse is down! Whatup!');
});