.live(" pageshow" ..)没有在Phonegap JQuery Mobile上工作

时间:2012-12-12 13:34:10

标签: cordova jquery-mobile

我有以下使用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)');
});

3 个答案:

答案 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之前