ScrollTo下一个/上一个按钮无法在iPhone / iPad上运行

时间:2013-11-26 19:11:27

标签: jquery iphone ipad scrollto

我使用以下内容在this page的页脚中创建下一个/上一个按钮:

function scroll(direction) {

var scroll, i,
        positions = [],
        here = $(window).scrollLeft(),
        collection = $('.block');

collection.each(function() {
    positions.push(parseInt($(this).offset()['left'],10));
});

for(i = 0; i < positions.length; i++) {
    if (direction == 'next' && positions[i] > here) { scroll = collection.get(i); break; }
    if (direction == 'prev' && i > 0 && positions[i] >= here) { scroll = collection.get(i-1); break; }
}

if (scroll) {
    $.scrollTo(scroll, {
        duration: 750       
    });
}

    return false;
}

$("#next,#prev").click(function() {        
    return scroll($(this).attr('id'));        
});        

我从这个source抓取了这段代码。

它适用于Chrome和Safari,但不适用于iPhone和iPad。点击箭头我得到图像跳跃/闪烁而没有滚动。

任何提示?谢谢!

修改

在阅读完iPad后,{I}不喜欢$(window).scrollLeft();而且IE8不喜欢window.pageXOffset;,我也尝试了以下内容:

    if ( agent.match(/(iPhone|iPod|iPad)/) ) {
        here = window.pageXOffset;
    } else {
        here = $(window).scrollLeft();
    }

当我读到iPad时,请不要滚动body元素:

    if (scroll) {
    $.scrollTo(scroll, {
        target: '#container',
        duration: 750
    });
    }

但仍然无法在iPad / iPhone上运行。

1 个答案:

答案 0 :(得分:0)

好的,通过设置轴有点工作,虽然我的旧iPhone仍然有问题:

    if (scroll) {
    $.scrollTo(scroll, {
        target: '#container',
        duration: 750,
        axis:'x'
    });
    }