Jquery mobile 仅在新创建页面时运行,而不是从另一个页面返回时运行
关于与ajax加载一起使用的Jquery mobile 仅在新创建页面时运行,而不是从另一个页面返回时运行,jquery-mobile,Jquery Mobile,关于与ajax加载一起使用的pagecreate事件,我不太理解 问题在于在多页来回转换上触发事件 // only on page a $(document).on("pagecreate", function (e) { alert('on pagecreate\n' + $(e.target).attr('id') ) }); // only on page a, ends // each page page a is <div data-role="page" id="pa
pagecreate
事件,我不太理解
问题在于在多页来回转换上触发事件
// only on page a
$(document).on("pagecreate", function (e) {
alert('on pagecreate\n' + $(e.target).attr('id') )
});
// only on page a, ends
// each page
page a is <div data-role="page" id="page-a">
page b is <div data-role="page" id="page-b">
page c is <div data-role="page" id="page-c">
奇怪? v) 奇怪的是:为什么r)不警觉,而v)警觉 w) 更奇怪的是:为什么v)发出警报,而w)没有
问题是——如何做到以下几点? 也就是说,仅当新创建页面时才发出警报。返回从不发出警报。更新
如果只想在前向导航中运行代码,请收听
pagecontainerbeforechange
或pagecontainerbeforechange
并从选项
对象检索导航方向
我将使用beforetransformation
,因为它在导航时触发一次,而不像beforechange
触发两次
如果options.direction
没有返回back
,请按如下方式运行代码
$(document).on("pagecontainerbeforetransition", function (e, data) {
if ( typeof data.options.direction != "undefined" && data.options.direction != "back" ) {
$(document).one("pagecontainershow", function (e, data) {
alert(data.toPage[0].id);
});
}
});
我使用了pagecontainershow
一次,只是为了显示警报。使用它来运行您想要的任何函数
因为您使用的是单页模型,所以每个页面div都位于单独的文件中。SPM中jQuery Mobile的默认行为是,一旦您离开外部页面,外部页面就会从DOM中删除。页面“a”是登录页,它被缓存并且从未被删除 当从“a”导航到“b”时,您会在“b”中收到警报。当您从“b”导航到“c”时,“b”将从DOM中删除,“c”将被加载并创建。你那里也有警报。当您从“c”导航回“b”时,“c”被删除,“b”被加载并创建。导航回“a”不会重新加载它,因为它已被缓存(登录页) 如果希望外部页面保留在DOM中,请将它们缓存为最近的问题之一 或者给每个外部页面div一个唯一的ID,然后运行一次
pagecreate
我已经更新了我的答案,以反映您的要求。如果您需要进一步的澄清,请让我知道。感谢您介绍
选项。方向
。我想这正是我所需要的。@KaFaiLo如果你觉得这个答案很有帮助,并且回答了你所关心的问题,就把它标记为一个被接受的答案。否则,如果我遗漏了其他内容,请告知。已尝试PageContainerBeforTransition
:a转到b:数据。选项。方向未定义█ b去a:是“回来了”█ 那么如何测试前向导航呢@OmarWhenoptions.direction
未定义,表示既不后退也不前进。当使用浏览器的后退按钮或$.mobile.back()
=data rel=“back”
时,它会返回。当按下浏览器的“前进”按钮时,它是向前的。pagecontainerbefortrensation
是我想要的。
3. (Here in 3., you type in the URL of a only once.
NO refresh/F5 key in the whole process)
.
Load a -> alert a
a go to b -> alert b
b go to c -> alert c
.
c back to b -> no alert
b back to a -> no alert
.
a go to b -> alert b
b back to a -> no alert
.
a go to b -> alert b
b go to c -> alert c
c go to d -> alert d
.
d back to c -> no alert
c back to b -> no alert
$(document).on("pagecontainerbeforetransition", function (e, data) {
if ( typeof data.options.direction != "undefined" && data.options.direction != "back" ) {
$(document).one("pagecontainershow", function (e, data) {
alert(data.toPage[0].id);
});
}
});
$(document).one("pagecreate", "#pageB", function (e) {
alert("created: " + this.id);
});