所以我有一个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(){}`是唯一有效的...
那么,我做错了吗?我错过了什么?谢谢!
答案 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!!");
});