【问题标题】:Simple automated slideshow in jQueryjQuery中的简单自动幻灯片
【发布时间】:2014-10-10 11:37:39
【问题描述】:

我有一个简单的幻灯片,到目前为止还可以。它由一个寻呼机和要显示的图像组成。两者都是无序列表:

<ul id="keyvisualpager">
    <li><a><span>Show Keyvisual 1</span></a></li>
    <li><a><span>Show Keyvisual 2</span></a></li>
    <li><a><span>Show Keyvisual 3</span></a></li>               
</ul>

<ul id="keyvisualslides">
    <li><img src="index_files/mbr_keyvisual1.jpg" alt="Keyvisual" /></li>
    <li><img src="index_files/mbr_keyvisual2.jpg" alt="Keyvisual" /></li>
    <li><img src="index_files/mbr_keyvisual3.jpg" alt="Keyvisual" /></li>
</ul>

相应的jQuery代码是:

$('#keyvisualpager li a').click(function () { 

    // get position of a element
    var mbr_index = $(this).parent().prevAll().length;
    var mbr_targetkeyvisual = mbr_index + 1;

    // hide current image and show the target image
    $('#keyvisualslides li:visible').hide();        
    $('#keyvisualslides li:nth-child('+mbr_targetkeyvisual+')').show()

    // remove active class from current indicator and add the same class to target indicator
    $('#keyvisualpager li a').removeClass('keyvisualactive');
    $('#keyvisualpager li:nth-child('+mbr_targetkeyvisual+') a').addClass('keyvisualactive');

});

最初所有图像都设置为显示:无; ... upcon 单击#keyvisualpager 中的链接,然后显示相应的图像。同时指标也随之变化。

现在,我的问题:

除了这种浏览图像的模式外,我还需要整个幻灯片自动前进。我怎样才能做到这一点:

a) 假设 5 秒后显示下一张图片

b) 类“.keyvisualactive”被添加到#keyvisualpager 中的相应元素

注意:不幸的是我必须使用 jquery 1.2.1,更新不是一个选项。

感谢你们的帮助

编辑

我现在正在使用此代码。它几乎可以工作。但是在显示集合中的最后一张图像之后:我如何告诉它从第一张图像重新开始?谢谢!

var reload = setInterval(function(){
    // get position of a element
    var mbr_index = $('#keyvisualpager li .keyvisualactive').parent().prevAll().length;
    var mbr_targetkeyvisual = mbr_index + 2;
    // alert(mbr_index+'//'+mbr_targetkeyvisual)

    // hide current image and show the target image
    $('#keyvisualslides li:visible').hide();        
    $('#keyvisualslides li:nth-child('+mbr_targetkeyvisual+')').show();

    // remove active class from current indicator and add the same class to target indicator
    $('#keyvisualpager li a').removeClass('keyvisualactive');
    $('#keyvisualpager li:nth-child('+mbr_targetkeyvisual+') a').addClass('keyvisualactive');

}, 2000);

【问题讨论】:

  • 谁还需要 jQuery 1.2.1,所以我可以向他们发送仇恨邮件?该代码已有四年历史了。
  • 我已经处理好了 :) 但现在我必须坚持下去......

标签: jquery slideshow


【解决方案1】:

您可以使用 JavaScript 的 setInterval() 方法来实现。

var reload = setInterval(function(){
            // do something
}, 5000);

数字是每次暂停的长度,以毫秒为单位。

要停止幻灯片放映,例如当用户选择图像时,您可以使用 clearInterval() 方法。

编辑

试试这样的:

$('#keyvisualpager li a').click(function () {

    var reload = setInterval(function(){

        // get position of a element
        var mbr_index = $(this).parent().prevAll().length;
        var mbr_targetkeyvisual = mbr_index + 1;

        // hide current image and show the target image
        $('#keyvisualslides li:visible').hide();        
        $('#keyvisualslides li:nth-child('+mbr_targetkeyvisual+')').show()

        // remove active class from current indicator and add the same class to target indicator
        $('#keyvisualpager li a').removeClass('keyvisualactive');
        $('#keyvisualpager li:nth-child('+mbr_targetkeyvisual+') a').addClass('keyvisualactive');

    }, 5000);

    $('#pagerstop').click(function(){
        clearInterval(reload);
    }

});

编辑 2

您必须跟踪图像数量和您所在的索引(如果我理解正确,您的 var mbr_targetkeyvisual 中有这个?)所以它应该像这样工作(未经测试):

// Image count
var content_length = $('#keyvisualslides').children().length;

var automate = setInterval(function(){
    if(index < content_length){
        $('#keyvisualslides li:visible').hide();        
        $('#keyvisualslides li:nth-child('+mbr_targetkeyvisual+')').show();
        mbr_targetkeyvisual++;
    }
    else{
        mbr_targetkeyvisual = 0;
        $('#keyvisualslides li:visible').hide();
        $('#keyvisualslides li:nth-child('+mbr_targetkeyvisual+')').show();
        mbr_targetkeyvisual++;
    }
}, 5000);

【讨论】:

  • 我将在哪里以及如何将其与上面的代码集成?谢谢
  • reload 需要在点击处理程序之外声明,因为它需要被clearInterval() 访问
  • clearInterval() 需要与setInterval() 在同一个函数中。真的,我的错。固定。
【解决方案2】:

如何使其自动化,或者我们可以添加导航下一个和上一个

$(function(){
  $('.slide-thumb .thumb').on("mouseenter",function(){
      var dataImage = $(this).data('image');
      $('.slide-jumbo .jumbo:visible').fadeOut(1000,function(){
         $('.slide-jumbo .jumbo[data-image="'+dataImage+'"]').fadeIn(500); 
      });
  });
});
    * { 
        font-family: Arial;
    }
    .slide-container {
        /*border: solid 1px;*/
        width: 500px;
        height: 360px;
    }
    .slide-jumbo {
        /*border: solid 1px;*/
        width: 500px;
        height: 300px;
        overflow: hidden;
    }
    .jumbo {
        position: relative;  
        display: inline-block;
        width: 500px;
        height: 300px;
        float: left;
    }
    .jumbo img, .thumb img {
        position: absolute;  
        left: 0;
    }
    .jumbo img {
        top: 0;
    }
    .thumb img {
        bottom: 0;
    }
    .jumbo-capt, .thumb-capt {
        width: 100%;
        background-color: rgba(0,0,0,0.8);  
        position: absolute;  
        color: #fff;  
        z-index: 100; 
      /*  -webkit-transition: all 300ms ease-out;  
        -moz-transition: all 300ms ease-out;  
        -o-transition: all 300ms ease-out;  
        -ms-transition: all 300ms ease-out;  
        transition: all 300ms ease-out;  */
        left: 0;  
        bottom: 0;
    }
    .slide-thumb {
        /*border: solid 1px;*/
        width: 500px;
        height: 60px;
        overflow: hidden;
    }
    .thumb {
        position: relative;  
        /*border: solid 1px;*/
        display: inline-block;
        width: 100px;
        height: 60px;
        overflow: hidden;
        float: left;
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div class="slide-container">
    <div class="slide-jumbo">
        <div class="jumbo" data-image="1">
            <img src="images/2.png">
            <div class="jumbo-capt">
                <h3>Title 1</h3>
                <p>Summary 1</p>
            </div>
        </div>
        <div class="jumbo" data-image="2">
            <img src="images/3.png">
            <div class="jumbo-capt">
                <h3>Title 2</h3>
                <p>Summary 2</p>
            </div>
        </div>
        <div class="jumbo" data-image="3">
            <img src="images/9.png">
            <div class="jumbo-capt">
                <h3>Title 3</h3>
                <p>Summary 3</p>
            </div>
        </div>
        <div class="jumbo" data-image="4">
            <img src="images/7.png">
            <div class="jumbo-capt">
                <h3>Title 4</h3>
                <p>Summary 4</p>
            </div>
        </div>
        <div class="jumbo" data-image="5">
            <img src="images/9.png">
            <div class="jumbo-capt">
                <h3>Title 5</h3>
                <p>Summary 5</p>
            </div>
        </div>
    </div>
    <div class="slide-thumb">
        <div class="thumb" data-image="1">
            <img src="images/2small.png">
            <div class="thumb-capt">
                <p>
                    <strong>
                        Title 1
                    </strong>
                </p>
            </div>
        </div>
        <div class="thumb" data-image="2">
            <img src="images/3small.png">
            <div class="thumb-capt">
               <p>
                    <strong>
                        Title 2
                    </strong>
                </p>
            </div>
        </div>
        <div class="thumb" data-image="3">
            <img src="images/9small.png">
            <div class="thumb-capt">
                <p>
                    <strong>
                        Title 3
                    </strong>
                </p>
            </div>
        </div>
        <div class="thumb" data-image="4">
            <img src="images/7small.png">
            <div class="thumb-capt">
                <p>
                    <strong>
                        Title 4
                    </strong>
                </p>
            </div>
        </div>
        <div class="thumb" data-image="5">
            <img src="images/9small.png">
            <div class="thumb-capt">
                <p>
                    <strong>
                        Title 5
                    </strong>
                </p>
            </div>
        </div>
    </div>
</div>

【讨论】:

    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    相关资源
    最近更新 更多