有没有办法在jQuery Mobile中更改页面但仍然有$(document).ready function initiate?我在调用$ .mobile.changePage时似乎遇到了一些问题,因为我的页面并不总是满载....
或者没有找到changePage的替代方法,有没有办法在页面被changePage加载到DOM后刷新页面?
答案 0 :(得分:2)
这个答案是错误的,没用,所以这里有一个能真正帮助别人的答案...... - 贾斯珀
文档:http://jquerymobile.com/demos/1.1.1/docs/api/methods.html
具体来说,您正在寻找reloadPage选项:
reloadPage ( boolean ,默认值:false)强制重新加载页面,即使它已经在页面容器的DOM中。仅在使用时使用 changePage()的'to'参数是一个URL。
所以,这样的事情会奏效:
$.mobile.changePage('/some/url.html', {
reloadPage : true
});
您还可以绑定特定伪页面的pageinit事件,以便专门为这些伪页面运行代码:
$(document).delegate('#page-1', 'pageinit', function () {
//run code for #page-1 pseudo-page
}).delegate('#page-2', 'pageinit', function () {
//run code for #page-2 pseudo-page
}).delegate('#page-3', 'pageinit', function () {
//run code for #page-3 pseudo-page
});
然后我建议将整个站点的所有代码放在一个.js包含中,并将其包含在每个文档的任何data-role =“page”或data-role =“dialog”元素的内部或外部。这样,无论用户如何登陆网站或浏览网站,您网站的代码都将始终存在。
答案 1 :(得分:1)
在jQuery Mobile中,ajax用于在导航时将每个页面的内容加载到DOM中,并且DOM就绪处理程序(即使用$(document).ready()
限定的所有事件)仅针对第一页执行。要在页面显示时执行特定事件,您可以尝试将其放在特定页面上,
$(document)
.unbind("pageshow.somenamespace")
.bind("pageshow.somenamespace",
function() {
// code here
}
);