JQueryMobile 1.4已经弃用了pageshow事件,而是推荐使用pagecontainershow; 但是,虽然我能够在文档级别获取pagecontainershow事件,但我无法将函数绑定到特定页面.
<div id="page1" data-role="page">
...
<script>
$( "#page1" ).on( "pagecontainershow", function( event, ui ) {
console.log("page1 pagecontainershow");
} );
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
演示:http://jsbin.com/IFolanOW/22/edit?html,console,output
我还考虑使用jQuery"on"函数的替代形式,我们使用选择器,但是这需要是页面div的父级,并且可能包括其他页面,因此不起作用.
作为一种解决方法,我已经完成了这项工作,但效率非常低:
function registerOnPageShow(pageId, func) {
var strippedPageId = pageId.replace("#", "");
var e = "pagecontainershow." + strippedPageId;
// TODO why isn't it working to use $(pageId) instead of $(document)?
$( document ).off(e).on(e, null, {page: strippedPageId, f: func}, function(e, ui) {
if ($(":mobile-pagecontainer").pagecontainer("getActivePage")[0].id == e.data.page) {
e.data.f(e, ui);
}
});
}
Run Code Online (Sandbox Code Playgroud)
您可以像这样获取页面ID.
$(document).on('pagecontainershow', function(e, ui) {
var pageId = $('body').pagecontainer('getActivePage').prop('id');
});
Run Code Online (Sandbox Code Playgroud)
目前无法在特定页面上显示/隐藏事件.
这是我正在使用的(jqmobile> 1.4):
$(document).on("pagecontainershow", function () {
var activePage = $.mobile.pageContainer.pagecontainer("getActivePage");
var activePageId = activePage[0].id;
switch (activePageId) {
case 'loginPage':
...
break;
case 'homePage':
...
break;
case 'groupPage':
...
break;
default:
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6494 次 |
| 最近记录: |