我在文本滑块中遇到幻灯片问题:

HTML:

<div id="textSlider">
    <ul>
         <li class="active">Doors | Windows | Showers</li>
         <li>Superb Fenestration | Superior Service</li>
    </ul>
</div>
<div class="clear"></div>

JS:
$('#textSlider ul li').each(function(){
    setTimeout(function(){
        $('.active').animate({'left': '0px'},500).delay(500).animate({'left': '-300px'},500);
        $(this).removeClass('active');
    }, 2000);

});

CSS:
#textSlider{
    position: relative;
    left: 0;
}
ul{
    list-style: none;
}
ul li{
    position: relative;
    left: -300px;
}
.clear{
    clear: both;
}

FIDDLE

我需要的:

我希望第一行滑入,然后滑出。
在第一行之后,第二行也应该这样做。

然后函数应该重复整个过程

我怎么做?

最佳答案

您可以将 JavaScript 更改为:

setInterval(function(){
    $('.active').animate({'left': '0px'},500)
      .delay(500)
      .animate({'left': '0px'},500)
      .animate({'left':'-300px'},500)
      .removeClass('active')
      .siblings('li')
      .addClass('active');
}, 2000);

JSFiddle Demo

这将每 2 秒无限循环...

请记住,它只会迭代 2 个元素(如您的示例所示),如果您需要它迭代 n 元素的数量,您可以试试这个:
setInterval(function(){
    var $current = $('.active').animate({'left': '0px'},500)
        .delay(500)
        .animate({'left': '0px'},500)
        .animate({'left':'-300px'},500)
        .removeClass('active');

    if($current.next('li').length > 0) {
        $current.next('li').addClass('active');
    } else {
        $current.siblings('li:eq(0)').addClass('active');
    }
}, 2000);

基本上缓存 $current 变量上的当前事件元素,使用 if 检查它后面是否还有另一个 <li>,如果没有,回到第一个 <li> 添加类 active ...

JSFiddle Demo 2

最后 ,如果您希望第一个循环与其他循环不同,您可以执行以下操作:
setTimeout(function(){
    loopList();
    setInterval(loopList,4000);
}, 1);

function loopList(){
    var $current = $('.active').animate({'left': '0px'},500)
    .delay(500).animate({'left': '0px'},500)
    .animate({'left':'-300px'},500)
    .removeClass('active');

    if($current.next('li').length > 0) {
        $current.next('li').addClass('active');
    } else {
        $current.siblings('li:eq(0)').addClass('active');
    }
}

在这种情况下,您将第一次立即从 setTimeout 调用第一次迭代(这就是本示例中为 0 的原因),然后调用将每 4 秒循环一次的 setInterval

JSFiddle Demo 3

关于jquery - 滑入和滑出文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17031422/

10-13 02:41