AntonEssential
@AntonEssential

Как автоматически добавлять класс jQuery с интервалом?

Добрый, например имеется див внутри которого лежит 12 элементов вероятно их может быть больше может и меньше, можно ли как-то автоматом добавлять с интервалом начиная с первого элемента активный класс, что бы активный класс прошел по всем элементам до последнего и потом опять вернулся к первому и так без конца по кругу.
  • Вопрос задан
  • 349 просмотров
Решения вопроса 2
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Вариант в виде плагина
HTML+JS
<div class="container">
    <div>div 1</div>
    <div>div 2</div>
    <div>div 3</div>
    <div>div 4</div>
    <div>div 5</div>
    <div>div 6</div>
    <div>div 7</div>
</div>

(function($) {
    $.fn.classСycle = function(o) {
        var _this = this,
            opt = $.extend({
                class: 'default_class',
                delay: 1000
            }, o),
            divs = $('div', this),
            len = divs.length - 1,
            init = function(i) {
                setTimeout(() => {
                    divs.removeClass(opt.class);
                    $(this).addClass(opt.class);
                    if (i >= len) {
                        setTimeout(() => $.fn.classСycle.call(_this, opt), opt.delay);
                    }
                }, i * opt.delay);
            };
        return divs.each(init);
    };
}(jQuery));
// Использование
$('.container').classСycle({
    class: 'active', // активный класс
    delay: 750 // задержка
});

Ответ написан
Комментировать
crazy_leo
@crazy_leo
Frontend Developer
Как то так
function toggleClassByInterval (className, elements, delay) {
    var $divs = $(elements)
    var currentPosition = 0
    var timer = setInterval(function () {
    	(currentPosition == $divs.length + 1) && (currentPosition = 0)
       $divs.removeClass(className).eq(currentPosition++).addClass(className)
    }, delay)
}


https://jsfiddle.net/eubwhL0y/9/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
serjikz
@serjikz
web-developer
Делал эту штуку вот тут topzakazz.ru/amst 780 и ниже несколько строк раскоментить и будет работать. Думаю всё вполне понятно как реализовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы