【问题标题】:jQuery mobile, pageshow event for multiple pagesjQuery mobile,多页面的pageshow事件
【发布时间】:2013-01-08 06:23:04
【问题描述】:

我有两个页面,test1.html 和 test2.html。每次当这些页面之一可见时,我都想执行一些代码。

这是两个页面:

test1.html:

    <!DOCTYPE html>
<html><head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>test1</title>
    <link rel="stylesheet"  href="css/jquery.mobile-1.2.0.css" />
    <script src="js/jquery.js"></script>
    <script src="js/jquery.mobile-1.2.0.js"></script>
</head><body>

<div data-role="page" id="test1">

    <div data-role="content">

    <a href="test2.html" data-role="button">jump to test2</a>

    </div>

</div>

<script type="text/javascript">

$(document).on('pageshow', '#test1', function (data) {
    alert('pageshow test1');
});

</script>
</body></html>

test2.html:

<!DOCTYPE html>
<html><head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>test1</title>
    <link rel="stylesheet"  href="css/jquery.mobile-1.2.0.css" />
    <script src="js/jquery.js"></script>
    <script src="js/jquery.mobile-1.2.0.js"></script>
</head><body>

<div data-role="page" id="test2">

    <div data-role="content">

    <a href="test1.html" data-role="button">jump to test1</a>

    </div>

</div>

<script type="text/javascript">
$(document).on('pageshow', '#test2', function (data) {
    alert('pageshow test2');
});
</script>

</body></html>

当我从 test1.html 开始时,我只收到关于 test1 的警报(每次我返回它时也是如此),但从来没有针对 test2.html。

我需要的是每个页面都不同的显示处理程序。

【问题讨论】:

    标签: jquery events jquery-mobile


    【解决方案1】:

    可用的解决方案

    解决方案 1

    首先,从页面 BODY 中删除 javascript 代码并将其放入单个 js 文件中。在 js/jquery.mobile-1.2.0.js 初始化之后,应该将新的 js 文件放入 HEAD 中。

    类似这样的:

    <script src="js/jquery.js"></script>
    <script src="js/jquery.mobile-1.2.0.js"></script>
    <script src="js/custom.js"></script>
    

    在您的情况下,jQuery mobile 正在加载第二个 HTML 文件,但只有这一部分:

    <div data-role="page" id="test2">
        <div data-role="content">
            <a href="test1.html" data-role="button">jump to test1</a>
        </div>
    </div>
    

    它将通过 ajax 加载到 DOM 结构中。这是第二页脚本没有执行的主要原因。

    解决方案 2

    第二种解决方案是在链接中使用 rel="external" 属性,它会在每次打开新页面时强制页面重新加载。

    <a href="test1.html" data-role="button" rel="external">jump to test1</a>
    

    无论如何,如果可能的话,千万不要在页面BODY内使用SCRIPT标签,它会起作用,但同时它会导致其他问题 p>

    更多信息

    如果您想了解有关此问题的更多信息,如何解决它+示例请查看我在我的个人博客中制作的article。本文直接讨论这个话题,所以我希望你不要把它看作是自我推销的尝试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2014-09-20
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      相关资源
      最近更新 更多