0

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

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

这很好用,但是,如果我在没有悬停时释放鼠标(mouseup),$("#rotateRight")那么技术上没有“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);
});
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 回答