我正在使用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中最基本的事情之一,它失败了。请告诉我为什么这不符合记录的方式。
答案 0 :(得分:0)
发生这种情况的原因是因为当您将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
的原因是因为document
将出现您的网页被调用的实例。因此,pageinit
通过事件委派管理到testPage
。第一次加载testPage
时,document
会触发pageinit
的{{1}}事件。
希望这可以解决问题。
答案 1 :(得分:0)
我发现了这个问题,即前一页上的脚本代码破坏了我试图捕获pageinit事件的页面上的脚本代码。当我删除那个坏脚本时,这开始工作了。所以这不再是一个问题。