JQM删除了我的页面
有一个非常小的例子用jquerymobile来演示我的问题:
JSFiddle - http://jsfiddle.net/forrest_gump/Q73Mk/3/
正如你所看到我调用jqm changePage()并且它会出现一秒钟,但它突然被#pageIndex删除了
我花了很多时间试图找出原因!?! 我是傻瓜还是jqm bug?
请注意,当页面准备好显示但仍然隐藏时, pageinit
会触发,因为该页面上仍然没有发生事件序列。 更改页面不会阻止这些事件发生,从而导致显示目标页面一段时间并恢复到上一页。
你有两个解决方案:
-
解决方案一:
使用
setTimeout()
延迟changePage
以确保触发所有页面事件 。$(document).on('pagecreate', '#pageIndex', function () { setTimeout(function () { $.mobile.pageContainer.pagecontainer("change", "#pageLogin", { transition: "slideup" }); }, 100); /* 100ms or more */ });
注意:不推荐使用
pagecreate
并将其替换为pagecreate
。 此外,$.mobile.changePage
将替换为$.mobile.pageContainer.pagecontainer("change", "#page", { options });
。演示
-
解决方案二:
收听
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(); } });
演示