function addcls() {
$('#slider ul li.current').removeClass('current');
$(this).closest('li').addClass('current');
};
setInterval(function () {
addcls();
}, 3000);
以上代码从第一个li标签中删除“current”类,但不插入下一个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>
答案 0 :(得分: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);
答案 1 :(得分: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
}
};
答案 2 :(得分:0)
closest() 遍历DOM树并获得第一个匹配的祖先。
您的列表项是彼此的兄弟姐妹,因此您可以使用 siblings() :
$(this).siblings('li').addClass('current');