从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; } } });