gpt4 book ai didi

javascript - 在单击事件时停止 javascript/jquery 中的正在运行的函数

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

我在 jquery 中有一个幻灯片功能,我想在特定的点击事件上停止。幻灯片功能在这里:

function slider(){
setInterval(function(){
var cur = $('img.active');
cur.fadeOut('fast');
cur.removeClass('active');
cur.css('opacity','0');
cur.addClass("hidden");
var nextimg;
if (!cur.hasClass("last")){
nextimg = cur.next("img");
}
else {
nextimg = cur.prev().prev().prev();
}
nextimg.removeClass("hidden").fadeIn('slow').css('opacity','1').addClass('active');
},5000);
}

我一直在阅读有关 .queue 的内容,但不确定如何准确使用它,我可以从队列中调用我的函数,然后在单击事件时清除队列吗?如果可能的话,我似乎无法弄清楚让它工作的语法。任何有关通过点击停止正在运行的函数的方法或其他方法的建议,我们将不胜感激。

最佳答案

就其值(value)而言,通常建议使用递归 setTimeout 而不是 setInterval。我做了那个改变,以及一些小的语法调整。但这是我认为您想要的基本实现。

// Store a reference that will point to your timeout
var timer;

function slider(){
timer = setTimeout(function(){
var cur = $('img.active')
.fadeOut('fast')
.removeClass('active')
.css('opacity','0')
.addClass('hidden'),
nextimg = !cur.hasClass('last') ? cur.next('img') : cur.prev().prev().prev();
nextimg.removeClass('hidden')
.fadeIn('slow')
.css('opacity','1')
.addClass('active');
// Call the slider function again
slider();
},5000);
}

$('#someElement').click(function(){
// Clear the timeout
clearTimeout(timer);
});

关于javascript - 在单击事件时停止 javascript/jquery 中的正在运行的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8369842/

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