代码之家  ›  专栏  ›  技术社区  ›  Squirkle

jQuery Gallery-Webkit问题

  •  1
  • Squirkle  · 技术社区  · 15 年前

    可以。所以我有一个小jQuery画廊滚动我写的工作与WordPress。它在Firefox中运行得很好,但在Chrome或Safari中却不起作用。

    链接如下:

    http://thehousinggroup.info/our-gallery/bathroom-renovations/gallery-1/

    以下是jQuery:

        var imageQuantity = $('.galleryBox img').size() //finds the number of images
        var wrapWidth = imageQuantity * 610 + 'px' //sets inner wrapper to image width*no. of images
    
        //Formating
        $('.galleryBox img')
            .hide()
            .unwrap()
            .wrapAll('<ul></ul>')
            .wrapAll('<div id="innerWrap"></div>')
            .wrap('<li></li>');//wraps images in ul and div, strips off the <p> that WordPress adds
        $('#innerWrap').css({
            'width' : wrapWidth,
            'position' : 'relative'
        });
        $('.galleryBox').css({'overflow' : 'hidden'}); //this css will be relegated to the stylesheet eventually...
        $('.galleryBox ul').css({'list-style' : 'none'});
        $('.galleryBox li').css({
            'float' : 'left',
            'margin-right' : '10px'
        });
        $('.galleryBox img').show(); //shows the images once the formatting is complete
    
        //Scroll Controls
    
        var currentNumber = 1; //this is for the "1 of 4" counter
        var fullNumber = imageQuantity;
    
        $('#innerWrap').before('<p id="scroller"><a id="prevButton" href="">previous</a> <span id="currentNumber">' + currentNumber + '</span> of ' + fullNumber +' <a id="nextButton" href="#">next</a></p>'); //this places the next, previous, and 1 of # counter buttons 
        $('#nextButton').click(function(event){
            event.preventDefault();
            var wrapPosition = parseInt($('#innerWrap').css('right'));
            var stopPoint = (fullNumber-1)*610;
            if(wrapPosition < stopPoint) { //sets the scrolling to stop at last image
                $('#innerWrap').animate({'right' : "+=610px"});
                ++currentNumber;
                $('#currentNumber').empty().html(currentNumber); //sets the counter to the proper number
            }
        });
        $('#prevButton').click(function(event){ //same as above, reversed out for the previous button
            event.preventDefault();
            var wrapPosition = parseInt($('#innerWrap').css('right'));
            var stopPoint = (fullNumber-1)*610;
            if(wrapPosition > 0) {
                $('#innerWrap').animate({'right' : "-=610px"});
                --currentNumber;
                $('#currentNumber').empty().html(currentNumber);
            }
    
        });
    

    我将在样式表中设置css,但现在是这样设置的。如果你有任何进一步的批评,我是开放的!

    3 回复  |  直到 15 年前
        1
  •  0
  •   Frankie    15 年前

    $('#innerWrap').animate({'right' : "-=610px"});

    试着在上面一步进行计算:

    right_pos = doTheMathHere;
    $('#innerWrap').animate({'right' : rigt_pos});
    
        2
  •  0
  •   Chuck Conway    15 年前

    此代码正在Chrome中中断: var wrapPosition = parseInt($('#innerWrap').css('right'));

    所以它跳过了这个街区:

            if(wrapPosition < stopPoint) {
                $('#innerWrap').animate({'right' : "+=610px"});
                ++currentNumber;
                $('#currentNumber').empty().html(currentNumber);
            }
    
        3
  •  0
  •   Squirkle    15 年前

    很抱歉回答我自己的问题

    我想我知道了。它与wrapAll()顺序有关。我本来打算 <ul> 被包裹在 <div> ,但恰恰相反。这不是Webkit的问题。更多的是“等等,为什么这在Firefox中起作用”之类的问题。