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

    演示