jQuery carousel -当到达列表上的最后一个项目时,禁用下一个/上一个链接

jQuery carousel - disable next/previous link when last item on the list is reached

本文关键字:下一个 链接 上一个 项目 最后一个 carousel 列表 jQuery      更新时间:2023-09-26

我对jQuery非常陌生,我所做的只是遵循这里所做的:

carousel使用jQuery

但是我只是想问,如果我想滑动到最后一个项目,然后禁用链接,表明最后一个项目已经到达,所以我们只需要停止滑动?请帮忙,我真的不需要无限滑动。

这是我的代码

$(function(){
    var carousel = $('.carousel ul');
    var carouselChild = carousel.find('li');
    var clickCount = 0;
    var canClick = true;
    itemWidth = carousel.find('li:first').width()+1; //Including margin
    //Set Carousel width so it won't wrap
    carousel.width(itemWidth*carouselChild.length);
    //Place the child elements to their original locations.
    refreshChildPosition();
    //Set the event handlers for buttons.
    $('.btnNext').click(function(){
        if(canClick){
            canClick = false;
            clickCount++;
            //Animate the slider to left as item width 
            carousel.stop(false, true).animate({
                left : '-='+itemWidth
            },300, function(){
                //Find the first item and append it as the last item.
                lastItem = carousel.find('li:first');
                lastItem.remove().appendTo(carousel);
                lastItem.css('left', ((carouselChild.length-1)*(itemWidth))+(clickCount*itemWidth));
                canClick = true;
            });
        }
    });
    $('.btnPrevious').click(function(){
        if(canClick){
            canClick = false;
            clickCount--;
            //Find the first item and append it as the last item.
            lastItem = carousel.find('li:last');
            lastItem.remove().prependTo(carousel);
            lastItem.css('left', itemWidth*clickCount);             
            //Animate the slider to right as item width 
            carousel.finish(true).animate({
                left: '+='+itemWidth
            },300, function(){
                canClick = true;
            });
        }
    });
    function refreshChildPosition(){
        carouselChild.each(function(){
            $(this).css('left', itemWidth*carouselChild.index($(this)));
        });
    }
});
<标题> JSFiddle演示

您只需检查滑动窗口的第一个和最后一个li

这将为您工作:

$(function(){
    var carousel = $('.carousel ul');
    var carouselChild = carousel.find('li');
    var clickCount = 0;
    var canClick = true;
    itemWidth = carousel.find('li:first').width()+1; //Including margin
    //Set Carousel width so it won't wrap
    carousel.width(itemWidth*carouselChild.length);
    //Place the child elements to their original locations.
    refreshChildPosition();
    //Set the event handlers for buttons.
    $('.btnNext').click(function(e){        
        if($(".carousel").find("li:eq(6)").text()!=14) {
            if(canClick) {
                canClick = false;
                clickCount++;
                //Animate the slider to left as item width 
                carousel.stop(false, true).animate({
                    left : '-='+itemWidth
                },300, function(){
                    //Find the first item and append it as the last item.
                    lastItem = carousel.find('li:first');
                    lastItem.remove().appendTo(carousel);
                    lastItem.css('left', ((carouselChild.length-1)*(itemWidth))+(clickCount*itemWidth));
                    canClick = true;
                });
            }
        }
    });
    $('.btnPrevious').click(function(){
        if($(".carousel").find("li:eq(0)").text()!=1) {
            if(canClick){
                canClick = false;
                clickCount--;
                //Find the first item and append it as the last item.
                lastItem = carousel.find('li:last');
                lastItem.remove().prependTo(carousel);
                lastItem.css('left', itemWidth*clickCount);             
                //Animate the slider to right as item width 
                carousel.finish(true).animate({
                    left: '+='+itemWidth
                },300, function(){
                    canClick = true;
                });
            }
        }
    });
    function refreshChildPosition(){
        carouselChild.each(function(){
            $(this).css('left', itemWidth*carouselChild.index($(this)));
        });
    }
});
<<h1> JSFiddle演示/strong>