【问题标题】:Multiple calls to $(document).ready on the same page [duplicate]在同一页面上多次调用 $(document).ready [重复]
【发布时间】:2012-05-17 10:18:47
【问题描述】:

可能重复:
Can you have multiple $(document).ready(function() sections?

可以在同一页面上多次调用 $(document).ready 吗?如果是这样,代码运行的顺序如何解决?这是否有任何影响

我在我的 Rails 应用程序中使用 jQuery。我通过应用程序使用了几个级别的 javascript,所有这些都使用 jQuery。

例如,我的 application.js 中有一些默认代码可以淡出 Flash Notices 我有一个包含在所有项目模型视图中的 projects.js 文件,并且我有一个仅包含在编辑操作呈现的视图中的 project/edit.js。

在我使用的所有三个 js 文件中:

$(document).ready
{
   //Do something
}

【问题讨论】:

  • 是的......可以多次调用 $(document).ready 。并且代码运行的顺序取决于先加载哪个js。
  • @ManseUK 这是一个很好的链接,但我认为这个问题略有不同。
  • @1ndivisible 这就是为什么它在评论前面有“可能”这个词
  • 你也可以在这个问题stackoverflow.com/questions/3934570/…查看接受的答案
  • @ManseUK 是的。我明白那个。我只是概述了为什么我认为它不是重复的。这就是我在评论中使用“我认为”这个词的原因。

标签: javascript jquery ruby-on-rails document-ready


【解决方案1】:

没关系。

执行顺序将与它们使用的顺序相同。

先进先出

jQuery 有一个名为readyList 的内部队列,用于存储就绪事件的所有回调。当您使用回调调用 ready 函数时,只需将其添加到队列中,并在 DOM 准备好时触发整个队列。

查看 jQuery 源代码可以很容易地告诉你:

源代码:

// The deferred used on DOM ready
readyList,
...
...

ready: function( fn ) {
    ...
    // Add the callback
    readyList.add( fn );

    return this;
}

【讨论】:

    【解决方案2】:

    他们运行the same order they were attached,这样做很好。但是,您可以使用 a shorter equivalent 来减少函数调用,因为 $(document).ready() 本身就是 2 个函数调用

    $(function(){
        //document is ready
    });
    

    【讨论】:

      【解决方案3】:

      在 jQuery 中对 $(document).ready 的调用按照它们定义的顺序执行。 更多信息在这里 http://docs.jquery.com/Tutorials:Multiple_$(document).ready()

      【讨论】:

        猜你喜欢
        • 2014-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多