我正在尝试使用Jquery制作图像旋转器,但是当我将鼠标放在图像上时,我的旋转器不会停止,因此我猜测clearTimeout出了问题。
这是我的代码:
$(document).ready(function () {
var o = 0
var t = null;
stop = false;
$("img:gt(0)").hide();
broj = ($("img").size());
function promena() {
o++;
if (o == broj) {
o = 0;
$("img:lt(3)").hide(function () {
$("img").eq(3).delay(1000).fadeOut(1000);
});
}
$("img").eq(o).delay(1000).fadeIn(1000, function () {
t = setTimeout(promena, 1000);
});
};
t = setTimeout(promena, 1000);
$("div img").mouseover(function () {
clearTimeout(t);
});
});
这是HTML:
<html>
<head>
<title>M</title>
</head>
<body>
<div>
<img src="images/1.jpg" />
<img src="images/2.jpg" />
<img src="images/3.jpg" />
<img src="images/4.jpg" />
</div>
</body>
</html>
如果它意味着什么,我的所有图像都绝对定位于img {position:absolute}
答案 0 :(得分:1)
您的代码基本上是这样做的:
- &GT;如果你触发mouseover事件,并因此在(1)以外的任何点调用clearTimeout,你就不会清除任何正在运行的计时器。
换句话说,如果你之后执行此操作,比如1.5秒,延迟仍然在运行,然后是淡入淡出,然后再次调用setTimeout - 所以你在调用之前尝试clearTimeout的setTimeout。
您应该调用.stop()来停止延迟和淡入淡出队列,并防止setTimeout在完成时运行。