jQuery Mobile:从其他页面返回时,可折叠在pageinit中未展开

时间:2011-10-21 06:08:07

标签: jquery-mobile

在我的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

如何重现问题:

  • http://bit.ly/rr0dq3
  • 加载test1.html
  • 您将收到一条警告消息,并且可以扩展折叠
  • 点击“GoTo page2”按钮,您将进入第二页test2.html
  • 在第二页上,点击灰色按钮'test',你会回到第一页test1.html
  • 现在的问题:正如你所看到的,正在执行test1.html的pageinit事件的alert命令,但扩展可折叠的不是 - 为什么不呢?显然正在正确输入pageinit事件监听器方法,但只有可折叠似乎在这里有问题。

我认为这可能是一个错误(在此处提交了一份报告https://github.com/jquery/jquery-mobile/issues/2791),但也许其他人对此有所了解。

解决方法: 当我使用不同的方式打开第二页test2.html时,正在执行警报和可折叠扩展,使用

window.location.href = "test2.html";

而不是

changePage(...);

但这并不令人满意。如果我使用页面注入方式,为什么它不能正常工作?当我打开不同的页面时,我已经调用了die()方法,以便不会让多个pageinit事件监听器保持不变。

1 个答案:

答案 0 :(得分:0)

您是否尝试将data-attribute用于可扩展内容的可折叠内容区域:

data-collapsed="false"

以下是指向此行为的文档的链接:http://jquerymobile.com/demos/1.0rc2/docs/content/content-collapsible.html