Jquery mobile 在导航历史记录中查找时,是否应使用$.mobile.navigate.history.closest?

Jquery mobile 在导航历史记录中查找时,是否应使用$.mobile.navigate.history.closest?,jquery-mobile,Jquery Mobile,我发现功能$.mobile.navigate.history.closest可用,但找不到如何使用它。有文件吗 我正在寻找这样的解决方案: 页面都是[data role=page], 其中一些(但不是全部)是根页面[data my role=root] 在浏览多个页面时,单击按钮将转到最后一个根页面 $.mobile.navigate.history.closest(某些标准)似乎适合查找最后一个根页面,但我不知道某些标准的语法通过id或url搜索条目。您可以创建一个自定义函数来循环浏览历史记录

我发现功能
$.mobile.navigate.history.closest可用,但找不到如何使用它。有文件吗

我正在寻找这样的解决方案:
页面都是
[data role=page]

其中一些(但不是全部)是根页面
[data my role=root]

在浏览多个页面时,单击按钮将转到最后一个根页面

$.mobile.navigate.history.closest(某些标准)
似乎适合查找最后一个根页面,但我不知道
某些标准的语法

通过
id
url
搜索条目。您可以创建一个自定义函数来循环浏览历史记录条目
$.mobile.navigate.history.stack
,并查找特定数据

请注意,如果要更改导航并确定导航方向,则需要使用
pagecontainerbeforechange
事件-仅当它返回
string
而不是
object

下面的代码(反向)遍历历史记录条目,并检查该条目是否包含
数据my root=“true”
-
.data(“my root”)
。此自定义
数据
被添加到根页面

$(document).on("pagecontainerbeforechange", function (e, data) {

    if (typeof data.toPage == "string" && data.options.direction == "back") {
        var i, active = $.mobile.navigate.history.activeIndex;
        /* loop through history entries in reversed order */
        for (i = active; i >= 0; i--) {
            /* to avoid errors, "i" shouldn't equal 0
               history entry shouldn't be current page */
            if (i != 0 && $($.mobile.navigate.history.stack[i].hash).data("my-root") && !$($.mobile.navigate.history.stack[i].hash).hasClass("ui-page-active")) {
                /* alter page */
                data.toPage = $.mobile.navigate.history.stack[i].url;
                /* optional */
                data.options.transition = "flip";
                break;
              /* means first page is reached - there's no hash for first page 
                 move to first page */
            } else if (i === 0) {
                data.toPage = $.mobile.navigate.history.stack[0].url;
                data.options.transition = "flow";
            }
        }
    }
});


您想用
data role=root
导航回最近的页面吗?@Omar我想导航回最近的
。使用“root page 2”和“root page 3”似乎没问题,但一旦单击黑色背景“root page 1”,然后转到2和3,单击“后退”按钮时将不起任何作用。让我多学习。谢谢。此解决方案将更改所有备份操作。实际上,我需要有“正常后退”和“根后退”按钮——只有“根后退”跳转到根页面。知道怎么做吗?@KaFaiLo简单地说,添加
!data.prevPage.data(“我的根目录”)
条件到
if
语句。我不确定,但这似乎不是所需要的。我需要的是:导航历史是[1,2,3,4],只有2是根页面。在4上,同一页上显示两个按钮:“正常后退”和“根后退”按钮“正常后退”变为3,“根后退”变为2。@KaFaiLo您可以将侦听器添加到这些按钮中,并使用上面的代码,而不是侦听
PageContainerBeforChange
。我给了你一个如何劫持反向导航的主意,你所需要的只是根据你的需要修改它。我没有你的代码,所以我无法预测你想要100%实现什么。如果你能为我提供你的页面结构,我很乐意进一步帮助你。