在我的jquery-mobile(1.0RC2)应用程序中,我有两个页面:test1.html,test2.html
第一页test1.html包含一个collabsible-set,我在pageinit事件监听器中通过脚本扩展了一个可整理项目(同时尝试了pageshow和pageinit):
$('#page1').live( 'pageinit', initPage);
function initPage() {
alert('initPage!'); // this line seems to be always getting executed
$('#my_expandable').trigger('expand'); // ... but this line doesn't when coming back via a back link!
}
这在第一次调用页面时效果很好。
然后我有一个链接引导我进入第二页test2.html,如下所示:
<script>
function goPage2(criteria) {
$('#page1').die( 'pageinit', initPage);
$.mobile.changePage( "test2.html", {reverse: false, reloadPage: true} );
}
</script>
<a href="javascript:goPage2('brand');" rel="external" class="ui-link-inherit" style="margin-top:0px;padding-top:0px;margin-bottom:0px;padding-bottom:0px;">page 2</a>
然后我通过
返回第一页<script>
function goPage1() {
$.mobile.changePage( "test1.html", { reverse: true, reloadPage: true} );
}
</script>
<a href="javascript:goPage1();" rel="external" class="ui-link-inherit">test</a>
只执行test1.html的pageinit事件监听器中的警报消息,但是没有通过
扩展可折叠的消息您可以在此处查看示例:http://bit.ly/rr0dq3
如何重现问题:
我认为这可能是一个错误(在此处提交了一份报告https://github.com/jquery/jquery-mobile/issues/2791),但也许其他人对此有所了解。
解决方法: 当我使用不同的方式打开第二页test2.html时,正在执行警报和可折叠扩展,使用
window.location.href = "test2.html";
而不是
changePage(...);
但这并不令人满意。如果我使用页面注入方式,为什么它不能正常工作?当我打开不同的页面时,我已经调用了die()方法,以便不会让多个pageinit事件监听器保持不变。
答案 0 :(得分:0)
您是否尝试将data-attribute
用于可扩展内容的可折叠内容区域:
data-collapsed="false"
以下是指向此行为的文档的链接:http://jquerymobile.com/demos/1.0rc2/docs/content/content-collapsible.html