jQuery mobile 1.4中的pageshow vs pagecontainershow

时间:2014-04-17 18:40:50

标签: jquery-mobile

我正在将我的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);

2 个答案:

答案 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)

sRGB JPG中所述:

  

在jQuery Mobile 1.4.0中,这两个事件是相同的,除了它们的名称和pagecontainer在页面容器上触发的事实,而页面显示是在页面上触发的。

因此,主要区别在于,当页面容器直接从页面接收pagecontainershow时,页面容器会收到pageshow。从pagecontainershow,您可以将目标网页设为ui.toPage,其idui.toPage[0].id

$(document).on("pagecontainershow", function(e, ui) {
    // Refer page as ui.toPage or ui.toPage[0].id
    ...
});