【问题标题】:What's the right way to do $(document).ready in jQuery Mobile?在 jQuery Mobile 中做 $(document).ready 的正确方法是什么?
【发布时间】:2011-07-28 17:14:47
【问题描述】:

假设我想在 jQuery Mobile 完成 UI 渲染后运行一些代码。 mobileinit 事件不起作用,因为它是在之前引发的。快速的 Google 搜索似乎表明仅使用 $(document).ready 不适用于 JQM。但我只是尝试过(在mobileinit 之后调用),它对我有用:我的代码运行并动态更新了元素等。就好了。所以我想知道,是否有某些原因我不应该使用它(它不可靠或搞砸了 JQM),还是那里的信息不工作只是不准确?我错过了什么?

更新:请参阅here 进行演示。

【问题讨论】:

  • @George:是的,根据那个问题$(document).ready 不起作用。但奇怪的是,对我来说,确实如此。所以我想我只是想弄清楚它现在是否有效,或者在处理 JQM 时是否有一些我应该知道的奇怪问题。

标签: jquery jquery-mobile document-ready


【解决方案1】:

您读到 $(document).ready 不能与 jQuery Mobile 一起工作的原因很可能是它不会在您每次查看伪页面时触发。也就是说,它仍然会在加载 html 文档时触发。

如果您想运行每次查看伪页面时触发的代码,您可以使用以下代码:

$('[data-role="page"]').live('pageshow', function () {
    //run your code here
});

注意:您还可以绑定其他挂钩(pageshow、pagehide、pagebefoershow、pagebeforehide),可以在此处找到文档:http://jquerymobile.com/demos/1.0b1/docs/api/events.html

--------- 编辑 ----------

我正在考虑这个问题,$(document).ready() 的最佳模拟不是绑定到“pageshow”事件,而是绑定到“pagecreate”事件。 $(document).ready() 在每次页面加载时触发一次,“pagecreate”对伪页面执行相同的操作,而“pageshow”在每次显示页面时触发。

因此,如果用户在主屏幕之外单击,然后单击返回按钮返回主屏幕,则“pageshow”将在主屏幕的第二次(及后续)“显示”时触发。

此外,“pageshow”要求用户导航到它所绑定的页面。

【讨论】:

  • 啊,我明白了;所以它“不起作用”的想法一直是基于一种误解?这很有趣;我看到了这些替代方法,并认为它们不太理想,因为它们会在每个伪页面显示之前触发一个事件,而不是整个文档(即 jQuery 移动站点)只显示一次。而后者正是我想要的。
  • @jasper 你链接到 alpha 版本的 api 事件,最好使用 beta 版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多