Javascript JQM删除我的页面
举一个很小的例子来说明我对jquerymobile的问题:Javascript JQM删除我的页面,javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,举一个很小的例子来说明我对jquerymobile的问题: JSFiddle - http://jsfiddle.net/forrest_gump/Q73Mk/3/ 如您所见,我调用了jqm changePage(),它出现了一秒钟,但是它突然被#pageIndex删除了 我花了很多时间试图找出原因!?!我是傻瓜还是jqm bug?请注意,pageinit在页面准备好显示但仍然隐藏时触发,因为该页面上仍有一系列事件未发生。更改页面并不能阻止这些事件的发生,导致在一段时间内显示目标页面并返回到上
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 */ });
已被弃用并替换为pageinit
。另外,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(); } });
pageshow
之后还有另一个事件,即pagechange
。我也尝试了pagechange事件,但它也不起作用。@DmitrySakov因为页面事件已被弃用并替换为pagecontainer
事件。这些新事件不能绑定到特定页面,因此您需要使用if语句
或开关
,以便在特定页面上执行特定代码。让我们