【问题标题】:migrate from jquerymobile 1.2.1 to 1.4.5从 jquerymobile 1.2.1 迁移到 1.4.5
【发布时间】:2016-11-25 01:38:44
【问题描述】:

我正在从 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 mobile 来说非常新)

【问题讨论】:

    标签: ios cordova jquery-mobile


    【解决方案1】:

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

    $(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;
            }
        }
    });
    

    【讨论】:

      【解决方案2】:

      jQuery 文档对此并不十分清楚,但简而言之,pageshow 在 JQM 1.4.0 中已被弃用,取而代之的是在 pagecontainer widget 上使用 pagecontainershow

      通过将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)");
      });
      

      您可以在this fiddle 中试用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-02
        • 2018-02-24
        • 1970-01-01
        • 1970-01-01
        • 2012-12-04
        • 2011-04-26
        • 2015-07-23
        相关资源
        最近更新 更多