2

所以我有一个 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 自己的内部文档,我们应该使用$(document).live(....); to create these bindings.... but my tests show that$(document).ready(function () {}` 是唯一有效的...

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

4

1 回答 1

1

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

还有一件事,live不推荐使用函数,on而是使用函数。在我的另一篇文章中找到更多关于它的信息,为了透明,这是我的个人 blob。或者在这里找到它。

这是您的代码的一个工作示例: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!!");
});
于 2013-02-27T12:32:22.977 回答