jquery:mousedown效果(同时左键点击)

我需要一个函数,当一个button被按下时执行一个函数,当这个button被释放时停止执行

$('#button').--while being held down--(function() { //execute continuously }); 

我相信这样的事情会起作用:

 var timeout, clicker = $('#clicker'); clicker.mousedown(function(){ timeout = setInterval(function(){ // Do something continuously }, 500); return false; }); $(document).mouseup(function(){ clearInterval(timeout); return false; }); 

看到这个演示: http : //jsfiddle.net/8FmRd/

对原始答案的一个小修改:

 $('#Clicker').mousedown(function () { //do something here timeout = setInterval(function () { //do same thing here again }, 500); return false; }); $('#Clicker').mouseup(function () { clearInterval(timeout); return false; }); $('#Clicker').mouseout(function () { clearInterval(timeout); return false; }); 

随着Clicker上的鼠标事件,当您将鼠标移出点击区域时,它将停止。

我build议两次做同样的事情的原因是为了获得更平滑的效果。 如果在超时设置之前没有执行一次,在这种情况下,在发生事件之前将会延迟500毫秒。

 $.fn.click2=function(cb,interval){ var timeout; if(!interval) interval=100; $(this).mousedown(function () { var target=this; timeout = setInterval(function(){ cb.apply(target); }, interval); return false; }).mouseup(function () { clearInterval(timeout); return false; }).mouseout(function () { clearInterval(timeout); return false; }); } 

以下是提供的解决scheme的纯JavaScript实现,它扩展了对触摸屏的支持。 您提供了id ,要执行的操作( function(){} )和interval (ms)来重复action 。 请注意,此实现也将立即执行该action ,而不是等待interval时间的stream逝。

 // Configures an element to execute a function periodically whilst it holds the user's attention via a mouse press and hold. function assertPeriodicPress(id, action, interval) { // Listen for the MouseDown event. document.getElementById(id).addEventListener('mousedown', function(ev) { action(); timeout = setInterval(action, interval); return false; }, false); // Listen for mouse up events. document.getElementById(id).addEventListener('mouseup', function(ev) { clearInterval(timeout); return false; }, false); // Listen out for touch end events. document.getElementById(id).addEventListener('touchend', function(ev) { clearInterval(timeout); return false; }, false); }