从jquerymobile 1.2.1迁移到1.4.5

我正在从jquerymobile 1.2迁移到1.4.5

我的每个应用程序页面的内容都以下面的语法开始,

$("#DemoAccountRegistrationPage").live("pageshow", function() { 

我已经能够弄清楚我需要将.live转换为.on,因此上述内容成为每个页面引用

 $("#DemoAccountRegistrationPage").on("pagecontainershow", function() { 

但是我意识到,上述格式仍然不符合1.4.5为什么内容不加载

有人可以给我提供正确的语法,以便能够改变

 $("#DemoAccountRegistrationPage").on("pagecontainershow", function() { 

到符合1.4.5的正确语法

我已经阅读了jquery文档,但不能完全理解什么是正确的语法需要(对jQuery手机很新)

jQuery文档对此并不十分清楚,但简而言之,JQM 1.4.0中不推荐使用pageshow ,而是在pageshow 小部件上使用pageshow

通过将pagecontainershow监听器添加到document ,然后检查参数以确定它是否与我想要的页面匹配,我能够得到一些工作。 像这样的东西:

 $(document).on('pagecontainershow', function(event, ui) { if(ui.toPage[0].id == "my_page_id"){ // do some stuff for my_page } }); 

我试图使它更加可重用,如下所示:

 function on_pagecontainershow(page_id, fn){ $(document).on('pagecontainershow', function(event, ui) { if(ui.toPage[0].id == page_id){ fn(); } }); } on_pagecontainershow('test_page', function(){ alert('pagecontainershow triggered'); }); 

语法我试过了,失败了:

 $(document).on('pagecontainershow', '#test_page', function(event, ui) { alert("I don't get called (1)"); }); $(document).delegate("#test_page", "pagecontainershow", function() { alert("I don't get called (2)"); }); $("#test_page").on("pagecontainershow", function() { alert("I don't get called (3)"); }); 

你可以在这个小提琴中试试。

这适用于我,因为我在我的一个项目中使用它:

 $(document).on("pagecontainershow", function(e, ui) { var pageId = $(":mobile-pagecontainer").pagecontainer("getActivePage").prop("id"); if (typeof ui.toPage == "object") { /* manipulate page navigating to */ switch(pageId) { case "page-one": //do stuff break; case "page-two": // do other stuff break; } } });