【问题标题】:JQuery Mobile transition stops working on long pageJQuery Mobile 转换停止在长页面上工作
【发布时间】:2014-06-27 11:20:33
【问题描述】:

我遇到了从长页面底部运行时不再发生页面转换的问题。

这是一个 jsfiddle:http://jsfiddle.net/7WVHA/7/

如果您打开示例并单击黑色导航按钮,则转换将按预期运行。但是,如果您返回长页面,滚动到底部并再次运行它,则不再发生转换,第二页立即出现。

任何帮助将不胜感激。

<div data-role="page" id="long">
    <div data-role="header" data-position="fixed" data-theme="a">
        <h1>Long Page</h1>
        <a href="#short" data-transition="flip" data-role="button" data-theme="b">DO TRANSITION</a>

    </div>
    <div data-role="content" data-theme="a">
        <div class="box">TEST BOX 1</div>
        <div class="box">TEST BOX 2</div>
        <div class="box">TEST BOX 3</div>
        <div class="box">TEST BOX 4</div>
        <div class="box">TEST BOX 5</div>
        <div class="box">TEST BOX 6</div>
        <div class="box">TEST BOX 7</div>        
    </div>
</div>
<div data-role="page" id="short">
    <div id="gridheader" class="header" data-role="header" data-position="fixed" data-theme="a">
        <h1>Short Page</h1>
        <a href="#long" data-transition="flip" data-role="button" data-theme="b"> Back</a>

    </div>
    <div data-role="content" data-theme="a">
        Short page
    </div>
</div>

【问题讨论】:

    标签: jquery jquery-mobile


    【解决方案1】:

    这是 jQuery Mobile 在长页面上的默认行为,过渡动画被禁用。

    您可以通过滚动到pagebeforechange 的页面顶部来解决此问题。

    $(document).on("pagebeforechange", function () {
        window.scrollTo(0, $.mobile.defaultHomeScroll);
    });
    

    $.mobile.defaultHomeScroll 默认为 0,除非 url bar 根据设备/平台隐藏。

    Demo

    【讨论】:

    • 这是更好的解决方案。乱搞getMaxScrollForTransition 可能会导致问题,所以我删除了我的答案。
    • @ChrisHardie 你应该保留你的答案,它包含对该问题的官方参考。
    • 感谢奥马尔的建议。我将使用您的解决方案并尝试添加功能以在转换之前记录视图位置,以便在返回时向下滚动到它。
    • @user1898327 在这种情况下,answer 可能会有所帮助。
    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多