你能在页面上定义两次jquery的$(function(){...})吗?

时间:2011-04-12 02:03:33

标签: javascript jquery

我正在开发一个网页,该网页会提取一个包含我所有功能的外部javascript文件。我将该文件称为“functions.js”。

functions.js有一个jQuery有$(function(){...});来完成页面准备时的操作。我的问题是,是否有可能在调用functions.js的同一页面的主体上写另一个$(function(){...},这样我在两个domReady函数中所做的一切都发生在页面上?例如,如果functions.js是:

$(function(){
$('div').css('color','green');
}

我把这段代码放在调用functions.js:

的页面上的标签中
$(function(){
$('div').css('background-color','red');
}

页面最终会让我的div有绿色文字和红色背景,还是会覆盖另一个,或者不会有效?

我希望这是有道理的!

4 个答案:

答案 0 :(得分:5)

是的,您可以根据需要添加任意数量的$(document).ready()调用:http://docs.jquery.com/Tutorials:Multiple_$(document).ready()

答案 1 :(得分:3)

你可以尝试一下你所知道的(它可能花费的时间少于你输入所有这些的时间):))

是的,两者都会运行并运作。

答案 2 :(得分:3)

是的,您可以根据需要编写任意数量的就绪函数。如果在关闭</body>标记之前和jquery.js脚本之前放置代码,那么你真的不需要准备好的函数。

这是一篇写得很好的博客,内容涉及文档功能如何降低您的速度以及不应该使用它们的原因。 http://encosia.com/2010/08/18/dont-let-jquerys-document-ready-slow-you-down/

答案 3 :(得分:2)

您可以随心所欲地放置。

您甚至可以在jQuery中放置多个$(window).load(function() { ... })(感谢cwolves)。

在JavaScript(没有jQuery)中,必须使用变通方法......

(function() {
   var events = [];

   var registerWindowLoadEvent = function(callback) {
       events.push(callback);
   };

   window.onload = function() {
       for (var i = 0, eventsLength = events.length; i < eventsLength; i++) {
          events[i].call();
       };
    };
})();