我想逐个突出显示一个列表项,一旦它到达最后一个列表项,应该删除突出显示
setInterval正在工作,但是当我使用clearInterval删除间隔时,它不工作
<ul>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
</ul>
var $anchors = $('a.anchor'), counter = 0;
var interval;
interval = setInterval(function(){
$anchors.removeClass('highlight');
$anchors.eq(counter++ % $anchors.length).addClass('highlight');
if($anchors.length==5){
clearInterval(interval);
}
}, 4000);
在到达最终列表项时清除间隔?
小提琴链接:DEMO
更新:抱歉,我的代码有误,更正了代码,仍然是同一个问题
最佳答案
如果要突出显示最后一个:
var $anchors = $('a.anchor'), counter = 0;
var interval;
interval = setInterval(function(){
$anchors.removeClass('highlight');
$anchors.eq(counter++ % $anchors.length).addClass('highlight');
if($anchors.length == counter){
clearInterval(interval);
}
}, 1000);
.highlight{
color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
</ul>
如果你不想突出最后一个
var $anchors = $('a.anchor'), counter = 0;
var interval;
interval =setInterval(function(){
$anchors.removeClass('highlight');
if($anchors.length==counter){
clearInterval(interval);
return;
}
$anchors.eq(counter++ % $anchors.length).addClass('highlight');
}, 1000);
.highlight{
color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
</ul>