1

我正在使用 JQM 开发一个 Web 应用程序。在一页上我有这个脚本:

$('#testpage').on('pageinit', function () {
  alert('testpage pageinit event fired');
});

其中页面 id = testpage。

根据 JQM 文档,当页面第一次被访问时加载时应该触发这个事件,但这对我来说没有发生。

当我直接转到该页面时,我会看到警报,但如果我先访问其他页面然后再转到该页面,我看不到警报让我相信事件根本没有触发。

我还尝试了以下语法:

 $(document).on('pageinit', '#testpage', function () {
   alert('testpage pageinit event fired');
 });

和完全相同的事情发生。

这是在 JQM 中能够做的最基本的事情之一,但它失败了。请告诉我为什么这不能按照记录的方式工作。

4

2 回答 2

0

我发现了问题,即早期页面上的脚本代码破坏了我试图捕获 pageinit 事件的页面上的脚本代码。当我删除那个坏脚本时,它开始起作用了。所以这不再是一个问题。

于 2013-08-06T15:30:29.883 回答
0

为什么将 pageinit 绑定到页面不起作用

发生这种情况的原因是因为在您绑定pageinitto 时testPage,它还没有在 DOM 中。所以它不起作用。你必须有这段代码,<head/>在你的<body/>部分加载之前加载,你testPage所在的位置。这就是它失败的原因。那么如何让它发挥作用呢?添加这个:

$('#testpage').on('pageinit', function () {
  alert('testpage pageinit event fired');
});

到HTML 部分的 末尾。<body>所以一切都会被加载,然后你的页面将被绑定到它的pageinit事件。您的代码如下所示:

<body>
  <div data-role="page" id="testPage"></div>
  <script>
    $("#testPage").on("pageinit", function() {
       alert("pageinit fires- this is in body.");
    });
  </script>
</body> 

这是一个演示:http: //jsbin.com/umorof/1/edit

为什么将 pageinit 绑定到文档有效

在这种情况下绑定您的作品的原因pageinit是因为document将出现在您的页面被调用的实例中。因此,由事件委托pageinit管理。首次加载时,会触发 的事件。testPagetestPagedocumentpageinittestPage

希望这可以解决问题。

于 2013-08-01T18:44:59.370 回答