jQuery Mobile - pageinit和pagecreate只触发一次

时间:2011-11-25 15:47:27

标签: jquery jquery-mobile

我正在开发我的第一个jQuery Mobile项目并遇到了障碍。我使用的是1.0版,到目前为止,该项目非常简单,只有索引上有三个脚本。我最初错误地使用了$(document).ready(function() { ... });,然后在文档中读到正确的操作是绑定pageinitpagecreate。这是我正在进行测试的脚本(直接从文档中获取):

$("#main").live('pageinit', function(event) {
        alert( 'This page was just enhanced by jQuery Mobile!' );
});

我已经尝试过这个作为外部JS文件和#main DIV中的脚本,正如我在这里找到的一些旧线程中所建议的那样。这在第一次加载索引时有效,但是当用户导航到另一个页面然后返回(重新访问)时,它不会再次触发。

我错过了什么?

3 个答案:

答案 0 :(得分:20)

每次页面显示时,

pageshow都会触发,无论是在初始页面加载时还是在用户导航后,然后导航回该页面。

以下是使用pageshow在页面的每个视图上运行代码的示例:http://jsfiddle.net/jasper/DHeva/(请注意,此代码正在关闭</body>标记之前运行,而不是封装在$(document.ready(function () {...});函数中。

以下是jQuery Mobile Events的文档链接(清楚地解释了每个事件的触发时间):http://jquerymobile.com/demos/1.0/docs/api/events.html(大约在页面的一半处开始 page 事件)。< / p>

答案 1 :(得分:2)

我个人仅使用pageinit事件将事件处理程序分配给UI(实际创建时只发生一次),并且pagebeforeshow更新UI - 即刷新数据,更新时间等....后一个事件将被称为EVERYTIME,用户切换到该页面(通过.changepage()或链接或浏览器重新加载)。

答案 2 :(得分:0)

pageinit仅在首次加载页面时触发。 索引页面永远不会被卸载(即使你在其他地方导航),所以它永远不会触发该事件。

尝试更改页面时触发的页面切换事件。