0

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

谢谢

4

4 回答 4

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/

于 2011-03-16T16:03:35.003 回答
2

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

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

如果您转到演示页面并单击最后一个输入框右侧的箭头之一,您将看到它是如何工作的。

于 2011-03-16T15:55:53.827 回答
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 }
于 2011-03-16T15:56:32.077 回答
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!');
});
于 2011-03-16T15:57:14.807 回答