假设我想在jQuery Mobile完成呈现UI后运行一些代码。 mobileinit
事件不起作用,因为在发生之前它已经引发了。快速Google搜索似乎表明仅使用$(document).ready
无法与JQM一起使用;但我只是尝试了它(在mobileinit
之后调用)它对我有用:我的代码运行并动态更新元素等等。所以我想知道,是否有某些原因我不应该使用它(它不可靠或混淆JQM),或者那里有关于它的信息不能正常工作?我错过了什么?
更新:有关演示,请参阅here。
答案 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”要求用户导航到其绑定的页面。