добавить динамический класс в ul li с установленным интервалом времени

0
function addcls() {
        $('#slider ul li.current').removeClass('current');
        $(this).closest('li').addClass('current');
    };

 setInterval(function () {
        addcls();
       }, 3000);

вышеупомянутый код удаляет "текущий" класс из первого тега li, но не вставляет его в следующий тег li. как это сделать с заданным интервалом

HTML

<ul>
        <li class="current">SLIDE 1</li>
    <li class="" style="background: #aaa;">SLIDE 2</li>
    <li class="">SLIDE 3</li>
    <li class="" style="background: #aaa;">SLIDE 4</li>
  </ul>  
  • 1
    $ (это) не имеет смысла в этой функции
Теги:

3 ответа

3
Лучший ответ

$(this) не имеет смысла в вашей функции, не так ли?

function addcls() {
        var current = $('#slider ul li.current').removeClass('current'),
            next = current.next().length ? current.next() : current.siblings().filter(':first');
        next.addClass('current');
    };

 setInterval(function () {
        addcls();
       }, 3000);
  • 0
    превосходно спасибо @Alex
  • 0
    Вы также можете написать следующее = current.next () || . Current.siblings () фильтр ( ': первый');
Показать ещё 2 комментария
1

.следующий()

function addcls() {
        var $this = $('#slider ul li.current').removeClass('current');
        $this.next('li').addClass('current');
    };


Если вы хотите пройти через
function addcls() {
    var $this =$('#slider ul li.current').removeClass('current');
    if ($this.next('li').length > 0) { //if next element is there 
        $this.next('li').addClass('current'); //add class to next to next element 
    } else { 
        $this.closest('ul').find('li:eq(0)').addClass('current'); //else add class to 1 st element 
    }
};
0

ближайший() пересечь дерево DOM и получить первого согласованного предка.

Элементы вашего списка - это братья и сестры друг друга, поэтому вы можете использовать сиблингов():

$(this).siblings('li').addClass('current');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню