Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加类时单击停止jquery循环函数_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 添加类时单击停止jquery循环函数

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){

我有一个函数,它在类处于活动状态时,连续循环一组div(见下文)。我试图修改这个函数,这样当你点击这个div时,它就会停止循环并将这个类添加到这个div中

我浏览了无数关于StackOverflow的例子,但没有找到适合我的情况的东西

我试图修改的函数:

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时,它们都会同时停止。你能帮帮我吗?