gpt4 book ai didi

javascript - 在 jQuery 的实时事件 mouseOver/mouseOut 中使用 setInterval

转载 作者:行者123 更新时间:2023-11-28 14:02:13 25 4
gpt4 key购买 nike

嘿伙计们!
我试图在用户将鼠标悬停在某个元素上时启动计时器并在鼠标移出时停止计时器。元素是动态创建的,这就是使用 live 方法的原因。

所以我的计时器启动正确,但我无法停止它!怎么了?

$elems.live('mouseover mouseout', function(event) {
var self = $(this), i = 0;

if (event.type == 'mouseover') {
var timer = setInterval(function() {
// change the src of the current element for an element of an array of src, much like in a slideshow
self.attr('src', tabSrc[i]);
i === 2 ? i = 0 : i++;
}, 1000);
}
// Handle the mouseOut
else {
// stop the timer <------ when I mouseOut the element, this doesn't seems to work...
clearInterval(timer);
}
});

最佳答案

您的 timer 变量的范围不正确,它需要位于处理程序之外,如下所示:

var timer;
$elems.live('mouseover mouseout', function(event) {
var self = $(this), i = 0;

if (event.type == 'mouseover') {
timer = setInterval(function() {
self.attr('src', tabSrc[i]);
i === 2 ? i = 0 : i++;
}, 1000);
}
else {
clearInterval(timer);
}
});

或者,也可以使用$.data()存储每个元素的间隔,如下所示:

$elems.live('mouseover', function() {
var self = $(this), i = 0;
$.data(this, 'timer', setInterval(function() {
self.attr('src', tabSrc[i]);
i === 2 ? i = 0 : i++;
}, 1000));
}).live('mouseout', function() {
clearInterval($.data(this, 'timer'));
});

关于javascript - 在 jQuery 的实时事件 mouseOver/mouseOut 中使用 setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4368957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com