javascript - 非常简单的幻灯片放映,带有上一个和下一个控件

标签 javascript jquery

我正在尝试创建一个非常简单的幻灯片放映,其中包含一些非常基本的控件,例如上一个和后一个。下一个似乎工作正常,但上一个显示出一些问题。当我点击前一个时,容器在出现项目之前会变得完全空白一段时间。我该如何处理这个问题?这是我所拥有的

<ul class="container">
    <li class="item">One</li>
    <li class="item">Two</li>
    <li class="item">Three</li>
</ul>

<div class="prev">Prev</div>
<div class="next">Next</div>

这是脚本

$('.item:gt(0)').hide();
setInterval(function () {
    $('.item').eq(0).hide()
        .next('.item').show()
        .end().appendTo('.container');
}, 3000);

$('.next').click(function(){
    $('.item:visible').hide().next().show()
    .end().appendTo('.container');
});

$('.prev').click(function(){
    $('.item:visible').hide().prev().show()
    .end().appendTo('.container');
});

这是 fiddle

http://jsfiddle.net/sghoush1/arE2z/5/

最佳答案

我可以建议用一个对象更好地构造它,以便您将来可以更好地控制幻灯片吗?

查看此处的实时示例:jsFiddle

JS:

var slideShow = {
    i: 0,
    next: function() {
        this.i++;
        if(this.i === this.max()) {
            this.i = 0;
        };
        this.reset();
        this.goTo(this.i);
    },
    prev: function() {
        if(this.i === 0) {
            this.i = this.max();
        };
        this.i--;
        this.reset();
        this.goTo(this.i);
    },
    goTo: function(i) {
        $('.item').eq(i).addClass('active');
    },
    init: function() {
        setInterval(function() {
            slideShow.next();
        }, 3000);
    },
    reset: function() {
        $('.item').removeClass('active');
    },
    max: function() {
        return $('.item').length;
    }

};

slideShow.init();

$('.next').click(function(){
    slideShow.next();
});

$('.prev').click(function(){
    slideShow.prev();
});

CSS:

.container{
    height:200px;
    width:200px;
    background:beige;
}
.item {
    display: none;
    font-size:60px;
    list-style:none;
}
.item.active {
    display: block;
}

关于javascript - 非常简单的幻灯片放映,带有上一个和下一个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18898499/

相关文章:

javascript - 第二次 ajax 发布时 Laravel csrf token 不匹配

javascript - 从外部url获取信息并放到我自己的网站上

javascript - Jquery - 脚本导入但功能 "Not Defined"

javascript - 为什么我得到 "Type ' String[] | undefined' 不是数组类型。”对于我的对象变量?

javascript - 按整数大小对嵌套数组进行排序

javascript - Angular.JS - 是否可以在一个指令中有多个 View ?

jquery - 数据表未显示最后一行

java - 如何在jsp、java和js代码中处理连续页面刷新

javascript - 按跨度时删除 <li>

jQuery - 如何将鼠标悬停在使用前置添加的代码上