jQuery幻灯片缩略图显示/隐藏

时间:2012-02-13 01:16:19

标签: javascript jquery html

我已经问过并完成了以下代码:

$(document).ready(function() {
    $('.gallery').each(function(index, element) {
        var id = $(this).attr('id');
        var images = $('#' + id + ' .content li').index() -1;

        $('#' + id + ' .prev').click(function(e) {
            e.preventDefault();

            if($('#' + id + ' .content .current').prev().length == 0 ) {
                $('#' + id + ' .content .current').fadeOut(1000).removeClass('current').hide();
                $('#' + id + ' .content li:last').fadeIn(1000).addClass('current').show();
            } else {
                $('#' + id + ' .content .current').removeClass('current').fadeOut(1000).hide().prev().fadeIn(1000).addClass('current').show();
            }

            return false;
        });

        $('#' + id + ' .next').click(function(e) {
            e.preventDefault();

            if($('#' + id + ' .content .current').next().length == 0 ) {
                $('#' + id + ' .content .current').fadeOut(1000).removeClass('current').hide();
                $('#' + id + ' .content li:first').fadeIn(1000).addClass('current').show();
            } else {
                $('#' + id + ' .content .current').removeClass('current').fadeOut(1000).hide().next().fadeIn(1000).addClass('current').show();
            }

            return false;
        });

        $('#' + id + ' .thumbnails li').click(function(e) {
            e.preventDefault();

            $('#' + id + ' .content .current').removeClass('current').hide();
            $('#' + id + ' .content .thumbnails').removeClass('current');
            $('#' + id + ' .content li').eq($(this).index()).fadeIn(1000).addClass('current').show();

            return false;
        });

        $('#' + id + ' .thumbnails ul').css('width', $('#' + id + ' .thumbnails ul li').length * scrollWidth + 'px');
        $('#' + id + ' .content li:first').addClass('current').show();
    });
});

html:

<div id="galerry-one" class="gallery">
    <div class="content">
        <ul>
            <li id="content-1"><img src="image1.jpg" /></li>
            <li id="content-2"><img src="image2.jpg" /></li>
            <li id="content-3"><iframe src="http://www.youtube.com/..."></iframe></li>
            <li id="content-4"><img src="image3.jpg" /></li>
            <li id="content-5"><iframe src="http://www.youtube.com/..."></iframe></li>
        </ul>
    </div>
    <div class="thumbnails">
        <span class="prev"> « </span>
        <ul>
            <li id="go-content-1"><img src="image1_thumbnai.jpg" /></li>
            <li id="go-content-2"><img src="image2_thumbnai.jpg" /></li>
            <li id="go-content-3"><img src="youtube1_thumbnai.jpg" /></li>
            <li id="go-content-4"><img src="image3_thumbnai.jpg" /></li>
            <li id="go-content-5"><img src="youtube2_thumbnai.jpg" /></li>
        </ul>
        <span class="next"> » </span>
    </div>
</div>

现在的问题是,每次点击上一个/下一个时我怎么能限制为4个缩略图?

1 个答案:

答案 0 :(得分:1)

我有一个类似的实现,用于显示4个项目并使用Prev / Next选项滚动。所以我只是稍微修改了它以使用你的HTML ..检查我的 DEMO

更改elToShow var以自定义您想要显示的缩略图数量。

var stPt = 0, elToShow = 4; //showing 4 elements

var $ul = $('.thumbnails ul');
var $li = $('.thumbnails ul li'); //get the list of li's
var $copy_li = [];
var copy_lgt = $li.length - elToShow;

//call to set thumbnails based on what is set
initNav();
function initNav() {
   var tmp;
   for (var i = elToShow; i < $li.length; i++) {
      tmp = $li.eq(i);
      $copy_li.push(tmp.clone());
      tmp.remove();
   }
}

$('.next').click (function () {
    $li = $('.thumbnails ul li'); //get the list of li's

    //move the 1st element clone to the last position in copy_li
    $copy_li.splice(copy_lgt, 0, $li.eq(0).clone() ); //array.splice(index,howmany,element1,.....,elementX)

    //kill the 1st element in the UL
    $li.eq(0).remove();

    //add to the last
    $ul.append($copy_li.shift());
});

$('.prev').click (function () {
    $li = $('.thumbnails ul li'); //get the list of li's

    //move the 1st element clone to the last position in copy_li
    $copy_li.splice(0, 0, $li.eq(elToShow-1).clone()); //array.splice(index,howmany,element1,.....,elementX)

    //kill the 1st element in the UL
    $li.eq(elToShow-1).remove();

    //add to the last
    $ul.prepend($copy_li.pop());

});