我发现函数$.mobile.navigate.history.closest
可用,但找不到如何使用它。有没有文件?
我正在寻找这样的解决方案:
页面都是[data-role=page]
,
其中一些(但不是全部)是根页[data-my-role=root]
当浏览多个页面时,单击按钮将转到最后一个根页面。
$.mobile.navigate.history.closest(some_criteria)
似乎很适合找到最后一个根页,但我不知道some_criteria
的语法
答案 0 :(得分:0)
$.mobile.navigate.history.closest
按id
或url
搜索条目。您可以创建自定义函数来遍历历史记录条目$.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 强>