5

我有以下使用 JQuery Mobile 的代码。这里的重点是我希望在触发“pageshow”事件时执行一些代码。

下面的所有代码都在 Chrome 上运行良好。我可以看到控制台日志。但是,当我将其作为 Phonegap 应用程序的一部分运行时,我从未触发过“pageshow”事件。

已经调查了一段时间,但没有成功。希望有人可以向我解释为什么我的事件丢失了,以及让这个代码在 Phonegap 上运行所需的步骤。

详细信息.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>

细节.js

$("#details_page").live("pageshow", function() {
    console.log('I am alive! (details.html)');
});
4

3 回答 3

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!");
    });
}

希望这会有所帮助,迈克

于 2012-12-12T14:09:00.747 回答
3

您现在可能已经解决了它,但是对于那些像我一样偶然发现的人,这就是我发现要解决的问题。live.() 在 JQuery 1.7 中已被弃用,并从 1.9 开始被删除。使用 on.() 代替。我已将我的(例如)行从:

$('#detailsPage').live('pageshow', function(event) {

到:

$(document).on('pageshow', '#detailsPage', function(event) {

HTH,皮疹*

于 2013-08-12T13:55:55.837 回答
0

我认为问题可能是您在显示页面后调用 JS。

如果这是你只需要提出的问题

<script src="js/details.js"></script>

在头部或“页面”div之前

于 2012-12-12T15:09:53.077 回答