JQM pageinit事件未触发

时间:2013-08-01 18:40:56

标签: events jquery-mobile

我正在使用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中最基本的事情之一,它失败了。请告诉我为什么这不符合记录的方式。

2 个答案:

答案 0 :(得分:0)

为什么将pageinit绑定到页面无法正常工作

发生这种情况的原因是因为当您将pageinit绑定到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通过事件委派管理到testPage。第一次加载testPage时,document会触发pageinit的{​​{1}}事件。

希望这可以解决问题。

答案 1 :(得分:0)

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