【问题标题】:JQuery Mobile - Loads wrong page after closing dialog and Javascript not always workingJQuery Mobile - 关闭对话框后加载错误页面并且 Javascript 并不总是有效
【发布时间】:2013-10-09 19:01:01
【问题描述】:

我有一个包含两个 html 页面(bmi.html 和 7min.html)和一些 javascript 的项目...我使用页脚在页面之间导航。

  • 第一个问题:第一次运行 7min.html,使用页脚导航到 bmi.html,bmi 中的 javascript 不起作用!
  • 第 2 期:第一次运行 bmi.html,导航到 7min.html 并再次返回 bmi。 Javascript 工作正常,但关闭弹出对话框后返回 7 分钟页面。

下面是我的代码。

7 分钟:http://jsfiddle.net/Rwf5G/ 体重指数:http://jsfiddle.net/snKyK/

<html>

<head>
    <meta charset="utf-8">
    <title>Body Trainer</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.1/jquery.mobile-1.2.1.min.css" />

    <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
    <script src="http://jquerymobile.com/demos/1.2.1/docs/_assets/js/jqm-docs.js"></script>
    <script src="http://jquerymobile.com/demos/1.2.1/js/jquery.mobile-1.2.1.js"></script>

</head>

<body>

    <div data-role="page" id="7min-page" class="type-interior" >

        <div data-role="header" data-position="fixed" data-id="appHeader" >
            <h1>Workout</h1>
        </div><!-- /header -->

        <div data-role="content" >
            <h4>Brief</h4>
            <p>
                Some bla bla...
            </p>


        </div>

        <div data-role="footer" data-id="appFooter" data-position="fixed">
            <div data-role="navbar">
                <ul>
                    <li>
                        <a href="bmi.html" data-prefetch="true">BMI</a>
                    </li>
                    <li>
                        <a href="7min.html" data-prefetch="true" class="ui-btn-active ui-state-persist">7min</a>
                    </li>
                </ul>
            </div><!-- /navbar -->
        </div><!-- /footer -->

    </div>

</body>

(不好意思我用的是jsfiddle,这里添加代码有点问题。)

【问题讨论】:

    标签: javascript jquery jquery-mobile


    【解决方案1】:
    1. 第一期:

      jQuery Mobile 使用 Ajax 导航系统来加载页面和更改视图/页面。当您从 bmi.html 开始时,会加载所有 HTML 标记。当您从 bmi.html 导航到 7min.html 时,jQuery Mobile 仅加载 &lt;div data-role="page"&gt;&lt;/div&gt; 和其中的内容。它忽略了data-role=page div 之外的其他 HTML 标签。

      • 解决方法:将JS代码放入&lt;div data-role="page"&gt;&lt;/div&gt;
      • 选项:要在不使用 AJAX 的情况下导航,请将 rel="external"data-ajax="false" 添加到锚标记。 这样做会正常加载页面,但是会失去页面过渡效果。
    2. 第二期:

      将此属性data-history="false" 添加到&lt;div data-role="popup"&gt; div。

    【讨论】:

    • 非常感谢!有用!只是为了记录,我认为脚本代码应该总是在 head 部分......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多