JQM(jQueryMobile)在changePage()上将最后一页推出DOM

Posted

技术标签:

【中文标题】JQM(jQueryMobile)在changePage()上将最后一页推出DOM【英文标题】:JQM (jQueryMobile) Push last page out of DOM on changePage() 【发布时间】:2011-08-09 21:53:51 【问题描述】:

我注意到我刚刚查看的页面仍在 DOM 中。在我使用 changePage() 转换到新页面后,有没有办法删除查看的最后一页?

我已禁用所有后退导航,因为我不希望在转换到新页面时使用返回到最后一页。

有什么建议吗?

网站流程:

主页->填写信息->在changePage()上提交 下一页->填写更多信息->在changePage()上提交 等等……

页面提交后我就不再需要它了

更新:

这是第一页:

<div data-role="page" 
     id="first_page" 
     data-theme="z" 
     data-backbtn="false" 
     data-url="first_page" 
     class="ui-page 
     ui-body-z">

添加新页面时它会在此附加一些内容:

<div data-role="page" 
     id="next_page" 
     name="next_page" 
     data-theme="z" 
     data-title="next_page" 
     data-url="getNextPage.php?page=next_page" 
     class="ui-page 
     ui-body-z">

像这样调用 live():

// pageName[index] = next_page
$('#'+pageName[index]).live('pagecreate',function(event, ui)   
    $(ui.prevPage).remove();

像这样使用 changePage():

$.mobile.changePage('getNextPage.php?page='+pageName[index],'slide',false,false);

【问题讨论】:

【参考方案1】:

不完全了解您的标记我猜您正在手动触发changePage()。如果是这种情况,您可以连接here 列出的事件之一。

页面展示 在页面被触发时 显示,在其转换完成后。

$('div').live('pageshow',function(event, ui)
  $(ui.prevPage).remove();
);

Example on jsfiddle.

【讨论】:

是的,这就是我现在正在做的事情。什么是垃圾部分? 用代码示例更新了我的问题,但您的建议的实施在演示中有效,但不适用于我的项目。我会将 prevPage id/name 传递给 remove() 吗? 不要将.live()注册到#id,尝试将.live()放在data-role="page"$('div[data-role="page"]').live('pageshow',...的任何div上,并尝试使用pageshow而不是pagecreate 嗯,确实可以删除 prevPage 但 pageShow 会破坏我的页面功能,因为我在显示页面之前添加了元素的自定义验证/页面呈现。我正在做的是从 ajax 调用加载每一页,所以只有一页在内存中 hmmm 因为你有一个ids 数组,也许在你的pagecreate 中简单地做$('#'+pageName[index]).remove()?【参考方案2】:

我不确定这是否与您的问题有关 - 但昨天有一个 JQM 修复与尝试删除 DOM 元素时的错误有关:https://github.com/jquery/jquery-mobile/commit/d4c7b5da66641a3fd081a834ca3d12a5518d499b

【讨论】:

以上是关于JQM(jQueryMobile)在changePage()上将最后一页推出DOM的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JQM 中删除动态添加的可折叠项

Jquery Mobile 滑块不工作 JQM 1.3.2 和 Jquery 1.10.2

jQuery Mobile 1.4.3 修复工具栏和页面内容问题

Mobiscroll datepicker 被 jQuery Mobile 模态隐藏

JQM:ios prev/next 改变风格

在 Android 上使用 JQM 和 PhoneGap 闪烁/闪烁