jQuery document.ready()不能与Require.js一起使用

pil*_*lau 1 javascript jquery document-ready domready requirejs

我在关闭body标签之前调用Require.js:

    <script data-main="assets/scripts/src/main.js" src="assets/scripts/lib/requirejs/require.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

这是我的main.js内容:

requirejs.config({
    urlArgs: "bust=" + (new Date()).getTime(), // override browser cache
});

require(['views/appView'], function (App) {
    App.initialize(); // this is just to test the module is actually loading
});
Run Code Online (Sandbox Code Playgroud)

appView.js包含:

define([
    'modernizr',
    'jquery',
    'underscore',
    'backbone',
    'common', // this module has about 4 other dependencies too
    'dust',
    'routers/main',
    'views/main'
], function (Modernizr, $, _, Backbone, Common, dust, router, mainView) {
    // This is supposed to load, even if jQuery loads after the DOM ready event
    $(document).on('ready', function () {
        console.log("I don't want to play nice");
    });

    return {
        initialize: function () {
            console.log("Init");
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,这样的:console.log("I don't want to play nice");不会发生在所有.

这就是我的网络时间轴在Chrome开发工具中的外观.正如您所看到的,DOM ready事件在jQuery加载之前触发 - 但是AFAIK,jQuery知道如何处理它!所以我迷路了. 在此输入图像描述

Cha*_*mal 7

它应该是,

$(document).ready(function () {
    console.log("I don't want to play nice");
});
Run Code Online (Sandbox Code Playgroud)

$(document).on("ready", handler),自jQuery 1.8起已弃用 http://api.jquery.com/ready/

  • 注意问题不在于.on("ready"`版本已被弃用(虽然它是,你不应该使用它),它是`.on("ready"`版本不会调用处理程序)如果在就绪事件发生后绑定它. (2认同)