【问题标题】:Where to put $(Document).ready(function(){});在哪里放置 $(Document).ready(function(){});
【发布时间】:2019-10-14 18:57:26
【问题描述】:

我已经读过,要让 jQuery 工作,我必须有这个代码:

$(Document).ready(function(){
    //some code
)};

但我不确定哪个文件首先编译到 application.js 中,那么我必须将该代码放在哪里以及如何将所有其他文件放入该文件中?

【问题讨论】:

    标签: jquery ruby-on-rails


    【解决方案1】:

    相关:Why does jQuery or a DOM method such as getElementById not find the element?
    相关:https://learn.jquery.com/using-jquery-core/document-ready/

    准备好文档的目的是允许您在页面上的任何位置包含脚本,并且 javascript 将延迟其执行,直到文件标记被完全解析并加载到 DOM 中。图片和其他资源可能尚未加载,但文档元素将存在。

    考虑到这一点,准备好文档不是要求。如果您在模式中构建文档,而不是在页面底部包含 javascript,或者至少在它将尝试引用的所有元素之后,则不需要准备好文档。一旦元素在 DOM 中,javascript 就可以找到它们。

    旁注; sn-p 中的Document 应该是document,因为它区分大小写。

    【讨论】:

    • 我知道为什么它不起作用,我想知道我必须在 RoR 中的哪个位置放置该行。为了有更好的组织,我制作了很多在 application.js 中编译的 .js 文件。我想知道我必须把那条线放在哪个文件中,或者我可以把 mby 放在其他地方
    • 你没有把那条线放在一个地方,它不是一条“线”。您将要附加到该结构中的就绪事件的每一段代码包装起来。您可以根据需要多次重复使用它。如果你想把它放在一个地方,那么构建你的代码,使它有一个单一的入口点。
    【解决方案2】:

    您定义 application.js 中包含的文件,如果需要控制它们的加载顺序,您可以显式地require 它们。如果您使用require tree,文件将按字母顺序加载。

    使用 jQuery 就绪模式的策略通常只是使用它来包装 initialize() 类型的函数调用,其中 intialize 是在您的 js 文件中其他地方定义的函数。如果您将大量代码放在文档就绪包装器中,则可能难以阅读,请保持简单。最好只使用一个文档就绪包装器,这样您就可以确定初始化顺序。

    【讨论】:

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