jQuery Mobile v1.4,我们是 2014 年 2 月。
所以,我在这里(gihub)读到,我们应该对捕获的事件if
发表声明,pagecontainer
以假设加载的页面是否是预期的。
这是一个试图了解新 pageContainer 小部件的预期行为及其预期用途的小场景。
就这么简单,一个登录页面,以编程方式预取一个欢迎页面,然后在成功登录时切换到欢迎页面。欢迎页面有一些 JS 脚本来为页面设置动画,只有在页面可见时才必须启动。我们如何做到这一点?
这是我通过控制台调查pagecontainer 事件时得到的结果。我的目标是找到一种方法来检测我的欢迎(实际上是任何页面)页面是否处于活动状态/可见状态。
为了便于理解,我使用这种格式作为查询:
$( 'body' ).on( 'pagecontainerbeforeload', function( event, ui ) {
console.log("beforeload");
console.log(event);
console.log(ui);
});
如此新的开始, 当我第一次加载页面和 JQM 时(即。/Users/login
)
可用的事件:
- pagecontainercreate => 空用户界面
- PCbeforetransition => ui.toPage可用
- PCshow => 只得到一个 ui.prevPage (在这种情况下是空的)
- PCtransition => ui.toPage可用
现在,即使您禁用了过渡效果,这些也会始终启动(请参阅 api)
好的,然后我想以编程方式加载一个页面(预取它),我这样做:(我想要/Users/welcome
)
$("body").pagecontainer("load", "/Users/welcome");
我启动了这些事件(页面尚不可见):
- PCbeforeload => 我得到一个 url,我可以用它来识别页面..
- PCload => 与 PCbeforeload 几乎相同的数据
好的,现在我去改变我的页面:(到/Users/welcome
)
$("body").pagecontainer("change", "/Users/welcome");
我触发了这些事件:
- PChide => ui.nextPage与 ui.toPage 相同...
- PCbeforetransition => ui.toPage可用
- PCshow => 只给出ui.prevPage
- PCtransition => ui.toPage按预期存在
好的,现在我很确定我想用来确保该页面已加载的唯一 pagecontainer 事件是pagecontainertransition
. 这是我在每个需要启动 JS 的页面上实现的:
设置页面容器的 id (PHP)
<div data-role="page" data-theme='a' id="<?php echo $this->id_url()?>">
...在页面末尾(JS)
$( 'body' ).on( 'pagecontainertransition', function( event, ui ) {
if(ui.toPage[0] == $('#'+id_url )[0] ) {
functionToLaunchWhenPageShowUp();
}
} );
现在,如您所见,我指的是ui.toPage
1st child[0]
以将其与$('.selector')
1st child 进行比较[0]
。这是正确的方法吗?我的意思是,新 API 的预期方式。感谢分享您的知识;)