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>
$(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);
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
}
};
ближайший() пересечь дерево DOM и получить первого согласованного предка.
Элементы вашего списка - это братья и сестры друг друга, поэтому вы можете использовать сиблингов():
$(this).siblings('li').addClass('current');