jquerymobile ajax加载页面的非手动行为

时间:2013-02-26 21:23:18

标签: asp.net-mvc jquery-mobile

所以我有一个asp.net mvc4 jquerymobile应用程序。页面A有一个指向页面B的链接。在PageB.cshtml文件的底部,我有以下代码

<script type="text/javascript">

    console && console.log("portalUser (index) raw!!");

    $(document).live('pageload'), function () {
        console && console.log("portalUser (index) pageload!!");
    }

    $(document).live('pageinit'), function () {
        console && console.log("portalUser (index) pageInit!!");
    }


    $(document).live('pageshow'), function () {
        console && console.log("portalUser (index) pageshow!!");
    }


    $(document).live('pagechange'), function () {
        console && console.log("portalUser (index) pagechange!!");
    }

    $(document).ready(function () {
        console && console.log("portalUser (index) document ready!!");
    });

</script>

从PageA访问时(通过jqm的ajax加载),控制台日志显示:

portalUser (index) raw!!
portalUser (index) document ready!!

直接在PageB访问时:

portalUser (index) raw!!
portalUser (index) document ready!!

完全相同!现在,根据jqm's own internal documents,我们应该使用$(document).live(....); to create these bindings.... but my tests show that $(document).ready(function(){}`是唯一有效的...

那么,我做错了吗?我错过了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

首先,您的代码出错,所有正常的jQuery Mobile页面活动都没有关闭 ); ,这就是您不这样做的主要原因有控制台输出。

另外,函数 live 已弃用,请改用函数 on 。在我的其他 ARTICLE 中查找有关它的更多信息,为了透明,这是我个人的blob。或者找到 HERE

以下是您的代码的工作示例:http://jsfiddle.net/Gajotres/QGnft/

$(document).on('pagebeforeshow', '[data-role="page"]', function(){       
    console && console.log("portalUser (index) pagebeforeshow!!");    
});

$(document).on('pageload', '[data-role="page"]', function(){    
    console && console.log("portalUser (index) pageload!!");
});

$(document).on('pageinit', '[data-role="page"]', function(){    
    console && console.log("portalUser (index) pageInit!!");
});

$(document).on('pageshow', '[data-role="page"]', function(){    
    console && console.log("portalUser (index) pageshow!!");
});

$(document).on('pagechange', '[data-role="page"]', function(){    
    console && console.log("portalUser (index) pagechange!!");
});

$(document).ready(function () {
    console && console.log("portalUser (index) document ready!!");
});