2011-03-16 39 views

回答

2

這裏是一個jQuery插件,提供了一個mousehold事件。

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

如果你去demo page,然後點擊其中一個箭頭到最後一個輸入框,你會看到它是如何工作的權利。

+1

感謝您的建議。我試圖避免更多的插件/庫,但如果Sime的解決方案無法解決,我會試試看。 – 2011-03-16 16:12:58

0

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 } 
+0

此示例適用於懸停,但@Richard需要一個用於按住鼠標左鍵的解決方案。按照書面編寫的 – jessegavin 2011-03-16 15:58:11

+1

,只要將鼠標懸停在所選元素上,此代碼就會進入無限循環。 – Alnitak 2011-03-16 15:58:47

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!'); 
}); 
+0

無論事件是否發生,都會每隔5秒調用一次checkOut()函數。需要計時器以鼠標開始,然後以鼠標結束。 – 2011-03-16 16:11:31

+0

在我身邊的錯誤,我想你想要一個功能,如果按下鼠標,每5秒執行一次。 – rsplak 2011-03-16 16:25:20

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/

+0

必須愛jsfiddle。這似乎很好,謝謝 – 2011-03-16 16:08:43

相關問題