setInterval无法用mouseup清除

时间:2013-05-06 21:05:34

标签: javascript jquery setinterval mouseup

我正在使用mousedown和mouseup来触发setInterval函数,如下所示:

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

然而,如果我在没有悬停在$("#rotateRight")之上时释放鼠标(mouseup),那么效果很好,那么技术上没有'mouseup',因此间隔会永远持续下去并且永远无法清除。

我无法使用悬停,因为我希望偶数用户点击并按住鼠标时。但与此同时,我需要修复这个“鼠标错误”。有什么想法吗?

更新:新代码如下,但仍然没有清除间隔,因为mouseup发生在iframe上,而不是DOM。

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);
});

1 个答案:

答案 0 :(得分:1)

通过将事件处理程序附加到文档来清除任何mouseup上的间隔。

var intervalIRight;

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

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

FIDDLE