我正在尝试创建一个简单的幻灯片。问题在于我的if / else语句。我希望它在我的$ base === 0时添加一个类,但它只在确定值为0后才适用。
我在console.log中的示例$ base.length,将如下所示:1,1,1,1,0,1。
我不希望它在声明0之后应用类,但同时也是如此。不知道是什么引起了这个。它是否与setInterval vs if / else?
发生冲突 <ul class="slideshow">
<li class="slideshow1 e-slide-on"></li>
<li class="slideshow2"></li>
<li class="slideshow3"></li>
<li class="slideshow4"></li>
</ul>
function slideSwitch() {
var $base = $('.slideshow li.e-slide-on');
$base.next().addClass('e-slide-on');
$base.removeClass('e-slide-on');
if ($base.length === 0 ){
$('.slideshow li:first').addClass('e-slide-on');
} else{
return;
}
}
$(function() {
setInterval( function(){slideSwitch()}, 1000 );
});
答案 0 :(得分:1)
我认为您应该检查是否有下一个元素,而不是当前有一个元素。
尝试if($base.next().length === 0)