マウスの左ボタンを特定の要素の上で押したままにしている間、特定の間隔で関数を定期的に呼び出す必要があります。jQueryでこれを行う簡単な方法はありますか、それともバニラjavascriptとsetInterval/setTimeoutを使用する必要がありますか?
ありがとう
マウスの左ボタンを特定の要素の上で押したままにしている間、特定の間隔で関数を定期的に呼び出す必要があります。jQueryでこれを行う簡単な方法はありますか、それともバニラjavascriptとsetInterval/setTimeoutを使用する必要がありますか?
ありがとう
mousehold
これがイベントを提供するjQueryプラグインです。
http://remysharp.com/2006/12/15/jquery-mousehold-event/
デモページに移動し、最後の入力ボックスの右側にある矢印の1つをクリックすると、それがどのように機能するかがわかります。
これは私がそれを行う方法です:
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
その結果、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 }
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!');
});