如果我在启动时有很多函数,它们都必须在一个单一的:

$(document).ready(function() {

或者我可以有多个这样的声明?


当前回答

是的,完全没问题。但是要避免没有理由就这么做。例如,当我的javascript文件动态生成时,我使用它来声明全局站点规则,而不是单独的页面,但如果你只是不断地这样做,它会使它难以阅读。

另外,您不能从另一个方法访问某些方法 jQuery(函数(){});调用 这是你不想这么做的另一个原因。

用旧窗户。Onload,但你将替换旧的每次你指定一个函数。

其他回答

你可以有多个,但这并不总是最明智的做法。尽量不要过度使用,因为这会严重影响可读性。除此之外,这完全合法。请看以下内容:

http://www.learningjquery.com/2006/09/multiple-document-ready

试试这个吧:

$(document).ready(function() {
    alert('Hello Tom!');
});

$(document).ready(function() {
    alert('Hello Jeff!');
});

$(document).ready(function() {
    alert('Hello Dexter!');
});

你会发现它和这个是等价的,注意执行顺序:

$(document).ready(function() {
    alert('Hello Tom!');
    alert('Hello Jeff!');
    alert('Hello Dexter!');
});

还有一点值得注意的是,在$(文档)中定义的函数。Ready块不能从另一个$(document)调用。ready block,我刚刚运行了这个测试:

$(document).ready(function() {
    alert('hello1');
    function saySomething() {
        alert('something');
    }
    saySomething();

});
$(document).ready(function() {
    alert('hello2');
    saySomething();
}); 

输出是:

hello1
something
hello2

是的,可以有多个$(document).ready()调用。然而,我不认为你能知道他们将以何种方式执行。(源)

是的,这是可能的,但你可以更好地使用一个div #mydiv和使用两者

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

//and

$("#mydiv").ready(function(){});

是的,你可以很容易地拥有多个区块。只是要小心它们之间的依赖关系,因为求值顺序可能不是您所期望的。

是的,你可以。

如果您有其他模块使用同一个页面,那么多个文档就绪部分将特别有用。用旧窗户。Onload =func声明,每次指定要调用的函数时,它都会替换旧的函数。

现在,所有指定的函数都被排队/堆叠(有人能确认吗?),而不管它们是在哪个文档准备部分中指定的。