【问题标题】:jQuery mobile hiding initial page instead of removing itjQuery mobile 隐藏初始页面而不是删除它
【发布时间】:2012-03-29 14:37:19
【问题描述】:

我一直在寻找在 jQuery mobile 通过 $.mobile.changePage(...)

加载下一页内容后删除初始页面容器的方法

我遇到的是,在页面首次显示时创建的这个初始 DIV 元素将始终保留在页面上 - 并且只会在调用 $.mobile.changePage(.mobile.changePage(. ..)

我需要删除这个初始页面容器,因为一些旧数据驻留在那里,应该在第一页更改时重置。

有人有解决办法吗?一直在网上搜索,但无济于事。

在调用 $.mobile.changePage(...) 之后,我也尝试执行 $('#first-page').remove(),但这会删除初始页面并使新加载的页面隐藏!

编辑:通过使用 .html("")

清除初始 DIV 来解决

【问题讨论】:

  • 为什么需要删除初始页面?你能更新数据的值吗?
  • 我宁愿页面上没有不必要的 DOM 元素,这会导致移动设备上的内存增长......但你给了我一个想法 - 也许我可以清除初始页面元素而不是尝试隐藏它...会尽快尝试,谢谢!

标签: jquery-mobile


【解决方案1】:

你可以在没有 ajax 的情况下只加载下一页,这应该会删除初始页面。

data-ajax="false"

希望这会有所帮助!

【讨论】:

  • 对不起,不能这样做...我需要保留 AJAX 功能
  • 我通过使用 .html("") 完全清除初始页面 div 解决了这个问题。仍然 - 如果我不需要保留 AJAX 调用,你的答案对这种情况是有效的,所以接受:)
【解决方案2】:

我认为您正在动态创建这些页面。 API 中有一个隐藏方法,但您可以将其应用于任何页面,然后在该页面退出时,它将被删除。

$.mobile._bindPageRemove

所以,它可能看起来像这样

newpage.attr( "data-" + $.mobile.ns + "external-page", true ).one( 'pagecreate', $.mobile._bindPageRemove );

注意:由于这是一个隐藏方法,它是隐藏 API 的一部分,升级时可能会发生更改,恕不另行通知。如果您使用它,请在升级时仔细测试。

【讨论】:

  • 赞成您的见解,虽然我真的不想使用未记录的功能......但谢谢 :)
【解决方案3】:

我做到了:

 $.mobile.changePage('login.html', {changeHash:false});

changeHash (默认: true) 类型: Boolean 位置栏应该更新。这具有创建一个新的效果 浏览器历史记录条目。这也意味着,如果设置为 false,则 传入页面将替换浏览器历史记录中的当前页面,所以 用户正在离开的页面将无法访问 通过浏览器的“返回”按钮。

【讨论】:

    猜你喜欢
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多