我想将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();
});
To:
$(document).ready(function() {
registerEvents();
});
它工作得很好。
所以我的问题是:它们之间有什么区别?
编辑:我正在使用jQuery v1.7.2
$(document).on('ready', function(){}) 不起作用。
bind
已经被废弃,但并未被移除。 - T.J. Crowderready
方法,但如果ready
事件已经触发并且您尝试.on("ready")
,绑定的处理程序将不会被执行。” - blgt.on()
方法附加事件处理程序到文档是首选方法。对于早期版本,则使用.bind()
方法将事件处理程序直接附加到元素上。根据我现在的理解,.bind()
方法并未被弃用,只是不再“首选”。 - mnsth