在导航历史中查找,我应该使用$ .mobile.navigate.history.closest吗?

时间:2015-01-02 08:23:54

标签: jquery-mobile

我发现函数$.mobile.navigate.history.closest可用,但找不到如何使用它。有没有文件?

我正在寻找这样的解决方案:
页面都是[data-role=page]
其中一些(但不是全部)是根页[data-my-role=root]
当浏览多个页面时,单击按钮将转到最后一个根页面。

$.mobile.navigate.history.closest(some_criteria)似乎很适合找到最后一个根页,但我不知道some_criteria的语法

1 个答案:

答案 0 :(得分:0)

$.mobile.navigate.history.closestidurl搜索条目。您可以创建自定义函数来遍历历史记录条目$.mobile.navigate.history.stack并查找特定数据。

请注意,如果您想要更改导航并确定导航方向,则只需在pagecontainerbeforechange而不是string返回时使用object事件。

以下代码通过历史记录条目循环(反向)并检查该条目是否包含data-my-root="true" - .data("my-root")。此自定义data已添加到根页。

$(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";
            }
        }
    }
});
  

<强> Demo