【问题标题】:jQuery Mobile - pageinit and pagecreate only firing oncejQuery Mobile - pageinit 和 pagecreate 只触发一次
【发布时间】:2011-11-25 15:47:27
【问题描述】:

我正在开发我的第一个 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 中的脚本进行了尝试。这在第一次加载索引时有效,但是当用户导航到另一个页面然后返回(重新访问)时,它不会再次触发。

我错过了什么?

【问题讨论】:

  • 你试过pageinit吗?
  • 是的,pageinit 和 pagecreate 都试过了。抱歉,我复制和粘贴的代码是我最近尝试使用 pagecreate 进行的编辑。
  • 你测试的是什么浏览器?
  • 目前 Firefox 和 Chrome..

标签: jquery jquery-mobile


【解决方案1】:

pageshow 将在每次显示页面时触发,无论是在初始页面加载时还是在用户导航离开然后导航回该页面时。

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

这里是 jQuery Mobile 事件的文档链接(清楚地解释了每个事件的触发时间):http://jquerymobile.com/demos/1.0/docs/api/events.html(大约在页面的中间位置开始 page 事件)。

【讨论】:

  • 很好的答案,如果我有的话,最好包括我的小提琴 +1000
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    尝试 pagechange 事件,该事件会在页面更改时触发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      相关资源
      最近更新 更多