当前位置: 首页 > 面试题库 >

什么时候应该使用jQuery的document.ready函数?

商焕
2023-03-14
问题内容

刚开始使用Javascript / jQuery时,我被告知要使用document.ready,但我从未真正了解原因。

有人可能会提供一些基本准则,说明何时在jQuery的内部包装javascript / jquery代码document.ready吗?

我感兴趣的一些主题:

  1. jQuery的.on()方法:我.on()对AJAX 使用了很多方法(通常在动态创建的DOM元素上使用)。.on()单击处理程序是否应该 始终内部 document.ready
  2. 性能:将各种javascript / jQuery对象保留 document.ready 内部外部 是否更具性能(性能差异是否显着?)?
  3. 对象范围:AJAX加载页面不能说是访问对象 的前一页的的document.ready,正确吗?他们只能访问document.ready 之外的 对象(即真正的“全局”对象)吗?

更新: 为了遵循最佳实践,我所有的JavaScript(jQuery库和应用程序的代码)都位于HTML页面的 底部
,并且我在defer加载AJAX的页面上使用jQuery脚本中的属性,以便可以访问这些页面上的jQuery库。


问题答案:

简单来说

$(document).readydocument准备就绪时触发的事件。

假设您已将jQuery代码放在head一节中并尝试访问dom元素(锚点,img等),则将无法访问它,因为它html是从上到下解释的,并且当jQuery代码时不存在html元素运行。

为了克服这个问题,我们将每个jQuery /
javascript代码(使用DOM)放在$(document).ready函数中,当dom可以访问所有元素时会调用该函数。

这就是原因,当您将jQuery代码放在底部(在所有dom元素之后,在之前</body>)时, 不需要$(document).ready

出于与我上面解释的相同原因,仅在使用method 时才需要将onmethod放入内部。$(document).ready``on``document

    //No need to be put inside $(document).ready
    $(document).on('click','a',function () {
    })

    // Need to be put inside $(document).ready if placed inside <head></head>
    $('.container').on('click','a',function () {
    });

编辑

根据评论,

  1. $(document).ready不等待图像或脚本。那$(document).ready和之间的最大区别$(document).load

  2. 只有访问DOM的代码才应位于就绪处理程序中。如果是插件,则不应处于ready事件中。



 类似资料:
  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

  • 问题内容: 在集成我以前从未使用过的Django应用程序时,我发现了用于定义类中函数的两种不同方式。作者似乎非常有意地使用了它们。第一个是我自己经常使用的: 另一个是我不使用的,主要是因为我不知道何时使用它,以及什么用途: 在Python文档中,装饰器的解释如下: 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 所以我想指的是自己(而不是实例)。我不完全理解为什么会这样,因为我总是可

  • 问题内容: 我看过各种文章,但我仍然不知道为什么不应该使用它。请让我知道您的想法。 问题答案: 我发现有必要在错误的设计中使用instanceof提示。可以肯定的是,将会出现一个大型,复杂的开关风格的构造。在我看到的其他大多数情况下,我们应该使用多态而不是instanceof。请参阅策略模式。(相关的使用示例) 我唯一需要使用的是实现时。

  • 问题内容: 我在阅读《 Swift编程语言》指南 时遇到了一个叫做的函数,但我仍然想知道为什么以及何时需要实现它,因为我们实际上不需要管理内存。 问题答案: 不需要实现该方法,但是如果需要在取消分配对象之前进行一些操作或清理,则可以使用它。 在苹果的文档包括例如: 因此,无论何时将玩家从游戏中移除,其硬币都会退还至银行。

  • 问题内容: 在Java中,有更好的解决方案。那我什么时候应该使用?这是多余的吗? 这两者之间的多线程方面是否常见? 问题答案: 这两个类在某些方面有所不同。 ConcurrentHashMap不保证*其合同约定的运行时间。它还允许调整某些负载因子(大约是同时修改它的线程数)。 另一方面,ConcurrentSkipListMap可确保各种操作的平均O(log(n))性能。它也不支持为了并发而进行调