javascript - jQuery Mobile "mobileinit"事件触发两次?

标签 javascript jquery-mobile

我的index.html看起来像这样:

<!DOCTYPE html>
<html class="ui-mobile-rendering">
<head>
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
    <meta charset="utf-8">
    <link rel="stylesheet" href="css/jquery.mobile-1.1.0.min.css" />
    <list rel="stylesheet" href="css/app.css" />
    <script src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/underscore.js"></script>
    <script type="text/javascript" src="js/backbone.js"></script>
    <script type="text/javascript" src="js/views/attachmentlist.js"></script>
    <script type="text/javascript" src="js/models/attachmentmodel.js"></script>
    <script type="text/javascript" src="js/app.js"></script>
    <script src="js/jquery.mobile-1.1.0.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="js/cordova-1.7.0rc1.js"></script>
    </head>

    <body></body>

</html>

这些文件绝对没有引用 jQuery Mobile,只有索引有。

我的 app.js 文件如下所示:

$(document).live("mobileinit", function () {
    console.log('in Mobile Init');
    $.mobile.ajaxEnabled = false;
    $.mobile.linkBindingEnabled = false;
    $.mobile.hashListeningEnabled = false;
    $.mobile.pushStateEnabled = false;

    // Remove page from DOM when it's being replaced
    $('div[data-role="page"]').live('pagehide', function (event, ui) {
        $(event.currentTarget).remove();
    });
});

某些原因导致“mobile init”触发两次。我不确定这是什么,或者即使这确实是一个问题,但感觉像是不应该发生的事情。
有什么办法可以解决这个问题吗?

编辑
我实际上只是注意到,如果我将一个简单的“脚本”标签直接放入正文中并在那里执行 console.log,它会运行两次....sooo....这段代码中的某些内容导致我的整个页面被初始化两次。
事实上,它实际上看起来好像我的整个设置加载了两次。我将 console.logs 放在应用程序首次加载时发生的所有事件链中,并且所有事情都会发生两次。

最佳答案

我曾经遇到过类似的事情。对于它的值(value),这就是解决它的方法:

$(document).bind("mobileinit", function() {
  $.extend(  $.mobile , {
    autoInitializePage: false,
    loadingMessage: false
  });
});

如果我必须使其适应您的代码,请尝试以下操作:

$(document).live("mobileinit", function () {
    console.log('in Mobile Init');

    $.extend(  $.mobile , {
        autoInitializePage: false,
        loadingMessage: false
    });

    $.mobile.ajaxEnabled = false;
    $.mobile.linkBindingEnabled = false;
    $.mobile.hashListeningEnabled = false;
    $.mobile.pushStateEnabled = false;

    // Remove page from DOM when it's being replaced
    $('div[data-role="page"]').live('pagehide', function (event, ui) {
        $(event.currentTarget).remove();
    });
});

顺便说一句,您不应该使用 jQuery 的 .live() 函数。根据自己docs :

As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live().

关于javascript - jQuery Mobile "mobileinit"事件触发两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10636266/

相关文章:

javascript - ('click keyup' 上的原生 javascript)

javascript - 如何在 python 中模拟 onclick 事件?

css - jQuery Mobile 保持下一页的样式

jquery - 不可以使用 JQuery-Mobile CSS 吗?

jquery - 在移动设备上在同一行标注和输入

iphone - 防止 JqueryMobile 上的电话号码识别

javascript - 获取 jQuery 下拉插件的选定值

javascript - 从变量 jquery 计算日期

javascript - 检测用户说话的时间 SpeechRecognition API?

javascript - 无法选中表单底部的 JQuery 移动复选框