如何在 Jquery Mobile 中测试页面是不是已“创建页面”?

Posted

技术标签:

【中文标题】如何在 Jquery Mobile 中测试页面是不是已“创建页面”?【英文标题】:How to test whether a page has been "pagecreated" in Jquery Mobile?如何在 Jquery Mobile 中测试页面是否已“创建页面”? 【发布时间】:2013-02-14 17:28:19 【问题描述】:

我有一个两页的应用程序。两个页面都有在客户端上动态创建的所有内容。

问题是,如果我去page A > page B > page A > page B,在第二次+ 访问时,Jquery Mobile 不再增强页面 B,尽管 pagecreate 触发正确。我被一页未增强的标记卡住了。

我不能在页面的单独小部件上调用create,因为小部件将是随机类型,因为我cannot call create prior to initialization。收到此错误后,我在未增强的页面上手动调用了pagecreate,修复了所有小部件。

问题是,如何检测页面是否已被 JQM 增强?因为我不想在已经增强的页面上调用它。

所以,看似简单的问题: 如何测试页面是否已被 Jquery Mobile 增强?

感谢您的意见!

【问题讨论】:

【参考方案1】:

这很简单。

    如果您使用 trigger('pagecreate') 来增强页面标记,请使用它来检查页面容器是否已增强:

    $(document).on('pagebeforeshow', '#index', function()       
        alert($.mobile.activePage.hasClass('ui-page'));
    );
    

    现场示例:http://jsfiddle.net/Gajotres/HthYd/

    如果您使用 trigger('create') 仅增强页面内容 div 使用它来检查内容容器是否已增强:

    $(document).on('pagebeforeshow', '#index', function()       
        alert($.mobile.activePage.find('[data-role="content"]').hasClass('ui-content'));
    );
    

    现场示例:http://jsfiddle.net/Gajotres/8jcGb/

当然,这种情况仅适用于您要增强整个页面或整个内容的情况。

编辑:

这是一个动态添加页面的真实示例:http://jsfiddle.net/Gajotres/8jcGb/

【讨论】:

你很快,我还为你做了一个动态添加页面的真实示例:jsfiddle.net/Gajotres/8jcGb 不错。我正在用一个没有被 JQM“创建页面”的页面拉出我的头发。不知道为什么... 如果你愿意,如果是简单的例子可以存档,发到我的邮箱,我看看。 不简单 :-) 使用 requireJS 和 renderJS。如果你想试一试,here 是一个精简版。点击比较>返回>再次点击比较,这次页面没有“创建”

以上是关于如何在 Jquery Mobile 中测试页面是不是已“创建页面”?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile 是不是可以在它加载的第一页中显示哈希?

如何在 jQuery mobile (1.4 beta) 中更改页面?

如何在jquery mobile中更改页面时避免黑屏

如何在 jQuery Mobile 中更改页面? [复制]

在页面之间导航后如何在jquery mobile中停止重复数据

如何通过 javascript 函数在 jQuery Mobile 中打开新页面