jQuery Mobile ChangePage替代方案

时间:2012-07-28 21:51:22

标签: jquery-mobile

有没有办法在jQuery Mobile中更改页面但仍然有$(document).ready function initiate?我在调用$ .mobile.changePage时似乎遇到了一些问题,因为我的页面并不总是满载....

或者没有找到changePage的替代方法,有没有办法在页面被changePage加载到DOM后刷新页面?

2 个答案:

答案 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
    }
  );