我希望在给定的时间间隔定期调用一个函数,同时在特定元素上按住鼠标左键。在 jQuery 中是否有一种简单的方法来执行此操作,或者我应该使用 vanilla javascript 和 setInterval/setTimeout 吗?
谢谢
我希望在给定的时间间隔定期调用一个函数,同时在特定元素上按住鼠标左键。在 jQuery 中是否有一种简单的方法来执行此操作,或者我应该使用 vanilla javascript 和 setInterval/setTimeout 吗?
谢谢
我会这样做:
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);
因此,您将处理程序绑定到mousedown
和mouseup
事件,并hold
相应地设置 CSS 类。同时,一个独立的计时器iv
将检查是否hold
设置了类,并相应地调用您的函数 ( foo
)。
现场演示:http: //jsfiddle.net/simevidas/7CUFE/
这是一个提供mousehold
事件的 jQuery 插件。
http://remysharp.com/2006/12/15/jquery-mousehold-event/
如果您转到演示页面并单击最后一个输入框右侧的箭头之一,您将看到它是如何工作的。
因此,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 }
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!');
});