Javascript 添加类时单击停止jquery循环函数
我有一个函数,它在类处于活动状态时,连续循环一组div(见下文)。我试图修改这个函数,这样当你点击这个div时,它就会停止循环并将这个类添加到这个div中 我浏览了无数关于StackOverflow的例子,但没有找到适合我的情况的东西 我试图修改的函数:Javascript 添加类时单击停止jquery循环函数,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个函数,它在类处于活动状态时,连续循环一组div(见下文)。我试图修改这个函数,这样当你点击这个div时,它就会停止循环并将这个类添加到这个div中 我浏览了无数关于StackOverflow的例子,但没有找到适合我的情况的东西 我试图修改的函数: function doLoop() { $('.cd-types, .img-frame, .img-content-container').each(function(){ (function($set){
function doLoop() {
$('.cd-types, .img-frame, .img-content-container').each(function(){
(function($set){
setInterval(function(){
var $cur = $set.find('.active').removeClass('active');
var $next = $cur.next().length ? $cur.next() : $set.children().eq(0);
$next.addClass('active');
},7000);
})($(this));
});
}
下面是我尝试修改循环的结果。我知道这很简单,我花了几个小时试图弄明白。如有任何建议/指示,将不胜感激 试试看
function doLoop() {
$('.cd-types, .img-frame, .img-content-container, .list-items').each(function () {
var $set = $(this);
var interval = setInterval(function () {
var $cur = $set.find('.active').removeClass('active');
var $next = $cur.next().length ? $cur.next() : $set.children().eq(0);
$next.addClass('active');
}, 1000);
$set.data('loop', interval);
$set.on('click', '> *', function () {
$(this).addClass('active').siblings('.active').removeClass('active');
clearInterval($set.data('loop'));
$set.removeData('loop')
});
});
}
演示:,试试看
function doLoop() {
$('.cd-types, .img-frame, .img-content-container, .list-items').each(function () {
var $set = $(this);
var interval = setInterval(function () {
var $cur = $set.find('.active').removeClass('active');
var $next = $cur.next().length ? $cur.next() : $set.children().eq(0);
$next.addClass('active');
}, 1000);
$set.data('loop', interval);
$set.on('click', '> *', function () {
$(this).addClass('active').siblings('.active').removeClass('active');
clearInterval($set.data('loop'));
$set.removeData('loop')
});
});
}
演示:,试试看
function doLoop() {
$('.cd-types, .img-frame, .img-content-container, .list-items').each(function () {
var $set = $(this);
var interval = setInterval(function () {
var $cur = $set.find('.active').removeClass('active');
var $next = $cur.next().length ? $cur.next() : $set.children().eq(0);
$next.addClass('active');
}, 1000);
$set.data('loop', interval);
$set.on('click', '> *', function () {
$(this).addClass('active').siblings('.active').removeClass('active');
clearInterval($set.data('loop'));
$set.removeData('loop')
});
});
}
演示:,试试看
function doLoop() {
$('.cd-types, .img-frame, .img-content-container, .list-items').each(function () {
var $set = $(this);
var interval = setInterval(function () {
var $cur = $set.find('.active').removeClass('active');
var $next = $cur.next().length ? $cur.next() : $set.children().eq(0);
$next.addClass('active');
}, 1000);
$set.data('loop', interval);
$set.on('click', '> *', function () {
$(this).addClass('active').siblings('.active').removeClass('active');
clearInterval($set.data('loop'));
$set.removeData('loop')
});
});
}
演示:,稍微简化了循环函数,以使用“self”变量技巧 timerID用于跟踪setInterval()调用,以便在单击时可以使用clearInterval()调用停止该调用:
$('.list-items').children().first().addClass('active');
var timerID;
$('.list-items').each(function () {
var self = this;
timerID = setInterval(function () {
var $cur = $(self).find('.active').removeClass('active');
var $next = $cur.next().length ? $cur.next() : $(self).children().eq(0);
$next.addClass('active');
}, 1000);
});
$('.list-items').on('click', function(){
clearInterval(timerID);
alert("Stopped");
});
请参阅工作代码,网址为:
使用“self”变量技巧将循环函数简化了一点 timerID用于跟踪setInterval()调用,以便在单击时可以使用clearInterval()调用停止该调用:
$('.list-items').children().first().addClass('active');
var timerID;
$('.list-items').each(function () {
var self = this;
timerID = setInterval(function () {
var $cur = $(self).find('.active').removeClass('active');
var $next = $cur.next().length ? $cur.next() : $(self).children().eq(0);
$next.addClass('active');
}, 1000);
});
$('.list-items').on('click', function(){
clearInterval(timerID);
alert("Stopped");
});
请参阅工作代码,网址为:
使用“self”变量技巧将循环函数简化了一点 timerID用于跟踪setInterval()调用,以便在单击时可以使用clearInterval()调用停止该调用:
$('.list-items').children().first().addClass('active');
var timerID;
$('.list-items').each(function () {
var self = this;
timerID = setInterval(function () {
var $cur = $(self).find('.active').removeClass('active');
var $next = $cur.next().length ? $cur.next() : $(self).children().eq(0);
$next.addClass('active');
}, 1000);
});
$('.list-items').on('click', function(){
clearInterval(timerID);
alert("Stopped");
});
请参阅工作代码,网址为:
使用“self”变量技巧将循环函数简化了一点 timerID用于跟踪setInterval()调用,以便在单击时可以使用clearInterval()调用停止该调用:
$('.list-items').children().first().addClass('active');
var timerID;
$('.list-items').each(function () {
var self = this;
timerID = setInterval(function () {
var $cur = $(self).find('.active').removeClass('active');
var $next = $cur.next().length ? $cur.next() : $(self).children().eq(0);
$next.addClass('active');
}, 1000);
});
$('.list-items').on('click', function(){
clearInterval(timerID);
alert("Stopped");
});
请参阅工作代码,网址为:
var tId=setInterval-现在只需拨打clearInterval(tId)Hi@mplungjan-感谢您的快速响应。我试过了,但还是有问题。思想?var tId=setInterval-现在只需致电clearInterval(tId)Hi@mplungjan-感谢您的快速响应。我试过了,但还是有问题。思想?var tId=setInterval-现在只需致电clearInterval(tId)Hi@mplungjan-感谢您的快速响应。我试过了,但还是有问题。思想?var tId=setInterval-现在只需致电clearInterval(tId)Hi@mplungjan-感谢您的快速响应。我试过了,但还是有问题。思想?感谢您的快速回复!这接近于我试图实现的目标,但它的方向肯定是正确的。我正在把这个加入书签!再次感谢!感谢您的快速回复!这接近于我试图实现的目标,但它的方向肯定是正确的。我正在把这个加入书签!再次感谢!感谢您的快速回复!这接近于我试图实现的目标,但它的方向肯定是正确的。我正在把这个加入书签!再次感谢!感谢您的快速回复!这接近于我试图实现的目标,但它的方向肯定是正确的。我正在把这个加入书签!再次感谢!杰出的非常感谢,这正是我想要的!你好,阿伦-你能给我解释一下这行吗?“$set.on('click,'>*',function())”大符号在代码中的作用是什么。谢谢@user2647510它仅用于将单击处理程序注册到集合元素的直接子元素Great!这很有道理。再次感谢您-非常感谢!你好@Arun P Johny-我正试图修改上面的小提琴,用这个,你有三个div同时循环,但是我很难做到,当你点击一个div时,它们都会同时停止。你能帮帮我吗?太好了!非常感谢,这正是我想要的!你好,阿伦-你能给我解释一下这行吗?“$set.on('click,'>*',function())”大符号在代码中的作用是什么。谢谢@user2647510它仅用于将单击处理程序注册到集合元素的直接子元素Great!这很有道理。再次感谢您-非常感谢!你好@Arun P Johny-我正试图修改上面的小提琴,用这个,你有三个div同时循环,但是我很难做到,当你点击一个div时,它们都会同时停止。你能帮帮我吗?太好了!非常感谢,这正是我想要的!你好,阿伦-你能给我解释一下这行吗?“$set.on('click,'>*',function())”大符号在代码中的作用是什么。谢谢@user2647510它仅用于将单击处理程序注册到集合元素的直接子元素Great!这很有道理。再次感谢您-非常感谢!你好@Arun P Johny-我正试图修改上面的小提琴,用这个,你有三个div同时循环,但是我很难做到,当你点击一个div时,它们都会同时停止。你能帮帮我吗?太好了!非常感谢,这正是我想要的!你好,阿伦-你能给我解释一下这行吗?“$set.on('click,'>*',function())”大符号在代码中的作用是什么。谢谢@user2647510它仅用于将单击处理程序注册到集合元素的直接子元素Great!这很有道理。再次感谢您-非常感谢!你好@Arun P Johny-我正试图修改上面的小提琴,用这个,你有三个div同时循环,但是我很难做到,当你点击一个div时,它们都会同时停止。你能帮帮我吗?