2

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

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

4

2 回答 2

2

这个答案是错误且无用的,所以这是一个真正可以帮助人们的答案...... - Jasper

文档:http: //jquerymobile.com/demos/1.1.1/docs/api/methods.html

具体来说,您正在寻找 reloadPage 选项:

reloadPage ( boolean , default: 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" 元素中或之外。这样,无论用户如何登陆网站或四处导航,您网站的代码都将始终存在。

于 2012-07-31T19:22:59.643 回答
1

在 jQuery Mobile 中,ajax 用于在您导航时将每个页面的内容加载到 DOM 中,并且 DOM 就绪处理程序(即使用 限定的所有事件$(document).ready())仅针对第一页执行。要在显示页面时执行特定事件,您可以尝试将其放在特定页面上,

$(document)
  .unbind("pageshow.somenamespace")
  .bind("pageshow.somenamespace", 
    function() {
      // code here
    }
  );
于 2012-07-28T22:02:13.890 回答