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

Dan*_*Tao 19 jquery document-ready jquery-mobile

假设我想在jQuery Mobile完成渲染UI后运行一些代码.该mobileinit事件不会工作,因为它提出了之前发生这种情况.快速谷歌搜索似乎表明,简单使用$(document).ready将无法与JQM一起使用; 但我只是尝试了它(后面称之为mobileinit)并且它对我有用:我的代码运行并动态更新元素等等.所以我想知道,是否有一些原因我应该使用它(它不可靠或混淆JQM),或者那里有关于它的信息根本不准确?我错过了什么?

更新:请参阅此处进行演示.

Jas*_*per 12

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

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

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

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

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

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

因此,如果用户点击远离主屏幕然后点击后退按钮返回主屏幕,则"页面显示"将在第二(以及随后)"显示"主屏幕时触发.

此外,"pageshow"要求用户导航到其绑定的页面.