代码之家  ›  专栏  ›  技术社区  ›  Barrie Reader

jQuery Carousel跳转到错误的项目

  •  2
  • Barrie Reader  · 技术社区  · 15 年前

    我的皮肤有知觉问题 :last .before() 方法不在最后一个元素之前插入代码。



    我想出了一个新问题 :/


    问题是(既然 <li> ,旋转木马现在将滚动4个项目,但它们会快速跳转到下一个项目。

    代码如下。 (另外,我认为是这样的: $('#carousel_ul').css({'left' : '0px'}); 19 37 .

    非常感谢。

    $(document).ready(function () { 
        var numItems = $('#carousel_ul').find('li');
        var visibleItems = 4;
        var difference = visibleItems % numItems.length;
    
        $('#carousel_ul li').last().before($('#carousel_ul li:last')+$('#carousel_ul li:last')); 
    
        while (difference > 1) {
            $('#carousel_ul li:last').after('<li class="empty" style="background-color: green;"></li>');
            difference--;
        }
    
        $('#right_scroll a').click(function(){
            var item_width = $('#carousel_ul li').outerWidth() + 10;
            var left_indent = parseInt($('#carousel_ul').css('left')) - (item_width * 4);
    
            $('#carousel_ul:not(:animated)').animate({'left' : left_indent},1500,function(){    
                $('#carousel_ul li:last').after($('#carousel_ul li:first')); 
                $('#carousel_ul').css({'left' : '0px'}); //error here?
            }); 
            return false;
        });
    
        $('#carousel_ul li').each(function(intIndex) {
            var itemName = $(this).attr('name');
            $(this).html(itemName);
            console.log(itemName);
        });
    
        $('#left_scroll a').click(function(){
    
            var item_width = $('#carousel_ul li').outerWidth() + 10;
            var left_indent = parseInt($('#carousel_ul').css('left')) + (item_width * 4);
    
            $('#carousel_ul:not(:animated)').animate({'left' : left_indent},1500,function(){     
                $('#carousel_ul li:first').before($('#carousel_ul li:last')); 
                $('#carousel_ul').css({'left' : '0px'}); //error here?
            });
            return false;
        });
        $('#tabcontainer > ul').tabs();
    });
    

    #carousel_inner {
    float:left; /* important for inline positioning */
    width:800px; /* important (this width = width of list item(including margin) * items shown */ 
    height: 150px;
    position: relative;
    overflow: hidden;  /* important (hide the items outside the div) */
    /* non-important styling bellow */
    background: #F0F0F0;
    z-index: 15;
    }
    
    #carousel_ul {
    position:relative;
    left:0px; /* important (this should be negative number of list items width(including margin) */
    list-style-type: none; /* removing the default styling for unordered list items */
    margin: 0px;
    padding: 0px;
    width:9999px; /* important */
    height: 150px;
    min-height: 150px;
    /* non-important styling bellow */
    padding-bottom:10px;
    z-index: 15;
    }
    
    #carousel_ul li{
    float: left; /* important for inline positioning of the list items */                                    
    width:205px;  /* fixed width, important */
    /* just styling bellow*/
    padding:0px;
    border: 1px solid black;
    height:150px;
    min-height: 150px;
    z-index: 15;
    }
    
    #carousel_ul li img {
    .margin-bottom:-4px; /* IE is making a 4px gap bellow an image inside of an anchor (<a href...>) so this is to fix that*/
    /* styling */
    cursor:pointer;
    cursor: hand; 
    border:0px; 
    z-index: 15;
    }
    #left_scroll, #right_scroll{
    float:left; 
    height:130px; 
    width:15px; 
    background: #C0C0C0; 
    z-index: 15;
    }
    #left_scroll img, #right_scroll img{
    /*styling*/
    cursor: pointer;
    cursor: hand;
    z-index: 15;
    }
    
    3 回复  |  直到 15 年前
        1
  •  1
  •   Barrie Reader    15 年前

    我通过手动设置CSS动画解决了这个问题 -160px .

        2
  •  0
  •   Mechlar    15 年前

    我以前也有过类似的问题。通过使用:last child和first child代替:first和:last来解决这个问题。希望对你有用。我还使用了insertBefore()和insertAfter(),它们似乎比after()和before()更适合我。

        3
  •  0
  •   Svish    15 年前

    这样做行得通吗?

    $('#carousel_ul').append('<li class="empty" style="background-color: green;"></li>');