有一个非常小的例子用jquerymobile来证明我的问题:
JSFiddle - http://jsfiddle.net/forrest_gump/Q73Mk/3/
正如你所看到的那样,我调用了jqm changePage()并且它会出现一秒钟,但它会被#pageIndex
突然删除我花了很多时间试图找出原因!?!我是傻瓜还是jqm bug?
答案 0 :(得分:1)
请注意,pageinit
会在页面准备好显示但仍然隐藏时触发,因为该页面上仍然没有发生事件的序列。更改页面不会阻止这些事件发生,从而导致显示目标页面一段时间并恢复到上一页。
您有两个解决方案:
解决方案一:
使用changePage
延迟setTimeout()
以确保触发所有页面事件。
$(document).on('pagecreate', '#pageIndex', function () {
setTimeout(function () {
$.mobile.pageContainer.pagecontainer("change", "#pageLogin", {
transition: "slideup"
});
}, 100); /* 100ms or more */
});
注意: pageinit
已弃用,已替换为pagecreate
。此外,$.mobile.changePage
已替换为$.mobile.pageContainer.pagecontainer("change", "#page", { options });
。
<强> Demo 强>
解决方案二:
收听pagebeforechange
事件以决定首先显示哪个页面。
$(document).on("pagebeforechange", function (e, ui) {
if (ui.toPage[0].id == "pageIndex" && typeof ui.options.fromPage === "undefined") {
$.mobile.pageContainer.pagecontainer("change", "#pageLogin", {
transition: "slideup"
});
e.preventDefault();
}
});
<强> Demo 强>