gpt4 book ai didi

javascript - 如何清除 jQuery mouseover #id 上的 setTimeout

转载 作者:行者123 更新时间:2023-11-28 15:51:58 25 4
gpt4 key购买 nike

这是我当前运行一系列 setTimeout 函数的代码。当鼠标移动或位于某个元素上方时,如何停止这些?

$( document ).ready(function() {  
clicky()
function clicky() {
setTimeout(function () {jQuery('#1500').trigger('click');}, 3000);
setTimeout(function () {jQuery('#1990').trigger('click');}, 6000);
setTimeout(function () {jQuery('#2010').trigger('click');}, 9000);
setTimeout(function () {jQuery('#battle').trigger('click');}, 12000);
setTimeout(function () {
jQuery('#water').trigger('click');clicky()
}, 15000);
}
});

最佳答案

您本质上需要保存对超时的引用,以便在需要时可以清除它们。在下面的示例中,我仅使用了一个对象,以便您可以根据需要指定要影响的超时。

这是一个有效的 fiddle ,可以清除悬停时的超时,然后在鼠标离开时重置它们:http://jsfiddle.net/6tQ4M/2/

代码:

$(function(){
var timeouts = {};

function setTimeouts () {
timeouts['#1500'] = specifyTimeout('#1500', 3000);
timeouts['#1990'] = specifyTimeout('#1990', 6000);
timeouts['#2010'] = specifyTimeout('#2010', 9000);
timeouts['#battle'] = specifyTimeout('#battle', 12000);
timeouts['#water'] = specifyTimeout('#water', 15000, function(){
console.log('reset the timeouts');
clearTimeouts();
setTimeouts();
});
}

function clearTimeouts () {
for(var key in timeouts){
if(timeouts.hasOwnProperty(key)){
clearTimeout(timeouts[key]);
delete timeouts[key];
}
}
}

function specifyTimeout (id, time, callback) {
return setTimeout(function(){
$(id).trigger('click');
if(callback){
callback();
}
}, time);
}

$('a').on('click', function(){
$('#projects').append('clicky clicky!');
});

$('#map').on('mouseover', clearTimeouts);
$('#map').on('mouseleave', setTimeouts);

setTimeouts();

});

如果您对代码有任何疑问,请告诉我!

关于javascript - 如何清除 jQuery mouseover #id 上的 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20207389/

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