0

私は次のように setInterval 関数をトリガーするために mousedown と mouseup を使用しています:

$("#rotateRight").mousedown(function() {
    intervalIRight = setInterval(rotateRight, 0);
}).mouseup(function() {
    clearInterval(intervalIRight);
});

これはうまく機能しますが、ホバリングしていないときにマウス (マウスアップ) を放すと、$("#rotateRight")技術的に「マウスアップ」がないため、間隔が永遠に続き、クリアされません。

ユーザーがマウスをクリックして保持したときにイベントを発生させたいので、ホバーを使用できません。しかし同時に、この「マウスアップのバグ」を修正する必要があります。何か案は?

更新: 新しいコードは次のとおりですが、DOM ではなく iframe でマウスアップが発生するため、間隔はクリアされません。

var intervalIRight;
var intervalILeft;


$("#rotateRight").on('mousedown', function() {
    intervalIRight = setInterval(rotateRight, 0);
});

$("#rotateLeft").on('mousedown', function() {
     intervalILeft = setInterval(rotateLeft, 0);
});

$(document).on('mouseup', function() {
    clearInterval(intervalIRight);
    clearInterval(intervalILeft);
});
4

1 に答える 1

1

mouseupイベント ハンドラーをドキュメントにアタッチして、いずれかの間隔をクリアします。

var intervalIRight;

$("#rotateRight").on('mousedown', function() {
    intervalIRight = setInterval(rotateRight, 0);
});

$(document).on('mouseup', function() {
    clearInterval(intervalIRight);
});

フィドル

于 2013-05-06T21:06:43.180 に答える