2011-07-21 110 views
8

如果我有多个$(document).ready(...)函数,它们是否互相覆盖?为了辩论的缘故,假装正确的编码被扔在这扇门上。

说我在我的网站的脚本文件中有一个$(document).ready(function() {...});。然后我使用第三方插件,也使用$(document).ready(function() {...});。这会覆盖我已经创建的函数,或者当文档准备就绪时,jQuery是否会将这些函数“排队”到全部运行?

+1

不,请记住,如果你使用它很多:http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/ – Paulpro

+0

@PaulPRO - 伟大的联系。我从来没想过那个。 – Spidy

+0

@Spidy:在创建这个问题时,你甚至看过建议的问题吗?这些问题已经有很多了。这是其他约5个问题的直接副本。 –

回答

16

不,他们不会互相推翻。每个功能都被执行。

你当然可以很容易地检查这个自己:http://jsfiddle.net/6jgGt/

还是从jQuery code本身的理解:

255线是现成的功能,其中jQuery.bindReady();被称为除其他事情初始化上线readyList对象429 readyList = jQuery._Deferred();

而且一旦它的延期对象传递的功能是附加readyList.done(fn);,我们CA n在第41行上看到in the done method该元素被添加到一个数组中callbacks.push(elem);因此每一个都被单独保存...

4

不,它们不会相互覆盖。就像你说的,他们正在排队。

相关问题