【问题标题】:Jquery Mobile pre-cache pageJquery Mobile 预缓存页面
【发布时间】:2012-07-08 16:22:01
【问题描述】:

在我的 jQuery Mobile 中,我有 2 个页面,index.html 和 test.html。索引页面中有一个<p>标签,它有一个类,所以当我的javascript点击<p>标签时,它想加载test.html。

但是使用 jQuery Mobile 时,索引页面加载测试页面时,它不在 DOM 中。因此,为了进入测试页面并替换 test.html 中 div 的内容,必须首先将其加载到 DOM 中。所以这就是我正在做的事情:

当点击 try2 时,我执行加载页面以将其放入 DOM,然后将 div 替换为新的 html,然后切换到页面。 div 的 html 永远不会改变。

$('.try2')
  .click(function(){
    $.mobile.loadPage( 'test.html', { showLoadMsg: false } );
    $('#mytest').html('i am here now').fadeIn('slow');
    $.mobile.changePage( "test.html", { transition: "slideup"} );
  });

【问题讨论】:

    标签: jquery-mobile


    【解决方案1】:

    在指向第二个页面的链接上使用 data-prefetch 属性预取页面。文档:http://jquerymobile.com/demos/1.1.0/docs/pages/page-cache.html

    然后绑定到 pageinit 或 pageshow 事件以在第二个页面转换到视图之前更新 div。

    您当前的代码将无法工作,因为您的事件处理程序中的前两行是异步的,因此要使用它们,您必须将回调函数用于异步函数。

    更新

    如果您想预先缓存页面但没有指向该页面的直接链接,您始终可以创建一个虚拟链接并将其隐藏:

    <a data-precache href="page2.html" style="display:none;"></a>
    

    【讨论】:

    • 如果我使用href,我已经使用了数据预取。在没有绑定到 pageinit 的情况下工作。但是在同一页面上,它说我可以使用 pageLoad 而不是数据预缓存。我将不得不查看父亲的 pageinit
    • 好的,这样看。索引页面是一个登录页面。因此,当我单击登录按钮时,它必须将实际页面更改为 Page1.html。现在在登录中没有要添加数据预取的 href。所以我只是不明白如何从一个页面更改为另一个页面,但它仍然能够访问所有 js 功能
    • 这就是pageinit 事件处理程序的用途。不管页面如何进入 DOM,一旦 jQuery Mobile 初始化页面,你就可以运行你的代码了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2014-07-17
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多