我有以下使用JQuery Mobile的代码。这里要点是我想在触发'pageshow'事件时执行一些代码。
以下所有代码都适用于Chrome。我可以看到控制台日志。但是,当我将其作为Phonegap应用程序的一部分运行时,我从未触发“pageshow”事件。
现在已经调查了一段时间但没有成功。希望有人可以解释为什么我的事件丢失,以及使这些代码在Phonegap上运行所需的步骤。
details.html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"> </script>
<link rel="stylesheet" href="css/index.css" />
<!-- cordova -->
<script src="cordova-2.2.0.js"></script>
</head>
<body>
<div data-role="page" id="details_page">
<a href="places.html" data-transition="slide" data-direction="reverse">Back</a>
<h3>Hi I am second page</h3>
</div>
<script src="js/details.js"></script>
</body>
</html>
details.js
$("#details_page").live("pageshow", function() {
console.log('I am alive! (details.html)');
});
答案 0 :(得分:6)
您应该使用以下
$(document).delegate("#details_page", "pageshow", function() {
console.log("Hello world!");
});
另请注意,您只能在触发deviceready事件后运行代码。
因此,设备就绪事件就是这样:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
$(document).delegate("#details_page", "pageshow", function() {
console.log("Hello world!");
});
}
希望这有帮助, 麦克
答案 1 :(得分:3)
你现在可能已经解决了这个问题,但对于那些偶然发现的事情,我发现这就是我要解决的问题。 live。()已在JQuery 1.7中弃用,并从1.9开始删除。 使用。()代替。 我改变了我的(例如)行:
$('#detailsPage').live('pageshow', function(event) {
为:
$(document).on('pageshow', '#detailsPage', function(event) {
HTH, 皮疹*
答案 2 :(得分:0)
我认为问题可能是你在页面显示后调用了JS。
如果那是你需要的问题
<script src="js/details.js"></script>
在头部或“页面”div之前