我想要一個函數在給定的時間間隔內按住鼠標左鍵按住特定元素。有沒有在jQuery中做這個簡單的方法,或者我應該使用香草javascript和setInterval/setTimeout?jQuery - 在mousedown上觸發常規函數調用
感謝
我想要一個函數在給定的時間間隔內按住鼠標左鍵按住特定元素。有沒有在jQuery中做這個簡單的方法,或者我應該使用香草javascript和setInterval/setTimeout?jQuery - 在mousedown上觸發常規函數調用
感謝
這裏是一個jQuery插件,提供了一個mousehold
事件。
http://remysharp.com/2006/12/15/jquery-mousehold-event/
如果你去demo page,然後點擊其中一個箭頭到最後一個輸入框,你會看到它是如何工作的權利。
jQuery的不提供任何功能看的支持,因此,您可以按如下方式使用香草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 }
此示例適用於懸停,但@Richard需要一個用於按住鼠標左鍵的解決方案。按照書面編寫的 – jessegavin 2011-03-16 15:58:11
,只要將鼠標懸停在所選元素上,此代碼就會進入無限循環。 – Alnitak 2011-03-16 15:58:47
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!');
});
無論事件是否發生,都會每隔5秒調用一次checkOut()函數。需要計時器以鼠標開始,然後以鼠標結束。 – 2011-03-16 16:11:31
在我身邊的錯誤,我想你想要一個功能,如果按下鼠標,每5秒執行一次。 – rsplak 2011-03-16 16:25:20
這是我會怎麼做:
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
)。
必須愛jsfiddle。這似乎很好,謝謝 – 2011-03-16 16:08:43
感謝您的建議。我試圖避免更多的插件/庫,但如果Sime的解決方案無法解決,我會試試看。 – 2011-03-16 16:12:58