在jQuery Mobile中做$(document).ready的正确方法是什么?

时间:2011-07-28 17:14:47

标签: jquery jquery-mobile document-ready

假设我想在jQuery Mobile完成呈现UI后运行一些代码。 mobileinit事件不起作用,因为在发生之前它已经引发了。快速Google搜索似乎表明仅使用$(document).ready无法与JQM一起使用;但我只是尝试了它(在mobileinit之后调用)它对我有用:我的代码运行并动态更新元素等等。所以我想知道,是否有某些原因我不应该使用它(它不可靠或混淆JQM),或者那里有关于它的信息不能正常工作?我错过了什么?

更新:有关演示,请参阅here

1 个答案:

答案 0 :(得分:12)

你读到$(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”。

因此,如果用户点击远离主屏幕,然后点击后退按钮返回主屏幕,则“页面显示”将在第二次(及后续)“显示”主屏幕时触发。 / p>

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