如何在 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) 中更改页面?