我正在将我的jQuery Mobile网站更新为1.4.2。
当我改变这个时:
$(document).delegate('#locations', 'pageshow', LocationsPageShown);
到此:
$('#locations').on('pagecontainershow', LocationsPageShown);
它不再发射事件。 FWIW,这引发了事件:
$(document).on('pagecontainershow', LocationsPageShown);
但是当然,我需要在显示位置页面时触发它,而不仅仅是通用文档选择器。
---编辑1 ---
这有效:
$(document).on('pageshow', '#locations', LocationsPageShown);
但这不是:
$('body')。on('pagecontainershow','#locations',LocationsPageShown);
答案 0 :(得分:2)
pagecontainershow的选择器应为:mobile-pagecontainer。如果这对你不起作用,你可以使用$(" body"),因为1.4中的正文总是页面容器:
$(":mobile-pagecontainer" ).on( "pagecontainershow", function( event, ui ) {
alert( "This page was just hidden: " + ui.prevPage );
alert( "The current page is : $(":mobile-pagecontainer" ).pagecontainer( "getActivePage" ));
});
事件的第二个参数(上例中的ui)为您提供了来自的页面。要获取当前页面,您可以使用$(":mobile-pagecontainer" ).pagecontainer( "getActivePage" )
。
因此,您可以查看当前页面ID以确定应运行的代码。
答案 1 :(得分:0)
在jQuery Mobile 1.4.0中,这两个事件是相同的,除了它们的名称和pagecontainer在页面容器上触发的事实,而页面显示是在页面上触发的。
因此,主要区别在于,当页面容器直接从页面接收pagecontainershow
时,页面容器会收到pageshow
。从pagecontainershow
,您可以将目标网页设为ui.toPage
,其id
为ui.toPage[0].id
$(document).on("pagecontainershow", function(e, ui) {
// Refer page as ui.toPage or ui.toPage[0].id
...
});