$(document).bind('ready',function)和$(document).ready(function(){})之间有什么区别

时间:2014-12-31 09:27:20

标签: javascript jquery requirejs

我想从requirejs版本2.0.0升级到2.1.5

以下是代码:

define(['jquery', 'test.js'],
    function ($, test) {
    var test = new $.test({
        //options
    });
    ....
});

test.js

(function($) {
    var registerEvents = function() {
        //dosth
    };
    $.test = function(options) {
        $(document).bind('ready', function() {
            registerEvents();
        });
        ...
        return test;
    }

    ...
});

在版本2.0.0中,requirejs保存dom ready事件,直到所有资源都被下载,因此它正常工作https://github.com/jrburke/requirejs/issues/249

当我升级到requirejs版本2.1.5时,将永远不会调用registerEvents函数。

但令人沮丧的是,如果我改变:

$(document).bind('ready', function() {
    registerEvents();
});

要:

$(document).ready(function() {
    registerEvents();
});

工作正常

所以我的问题是:它们之间有什么区别?

编辑:我正在使用jQuery v1.7.2

$(document).on(' ready',function(){})无法正常工作

1 个答案:

答案 0 :(得分:9)

区别在于the docs say

  

还有$(document).on(&#34; ready&#34;,handler),从jQuery 1.8开始不推荐使用。这与ready方法的行为类似,但如果ready事件已经触发并且您尝试.on(&#34; ready&#34;)将不会执行绑定处理程序。< / strong>以这种方式绑定的就绪处理程序在被上述其他三种方法绑定后执行。 [em mine]

.bind.on行为相似。


这是

之间的唯一区别
$( document ).ready( handler )
$().ready( handler ) // (this is not recommended)
$( handler )

$( document ).on( "ready", handler )
$( document ).bind( "ready", handler )

文档中提及的内容,因此我猜测是您问题的最可能来源