我注意到$(document).ready(..)
会导致应用javascript效果的显着延迟。但是我也明白,只是在<script>
中产生效果并不总是有效,因为DOM可能还没准备好。
您应该何时将代码放在$(document).ready
中,何时可以将其添加到全局<script>
代码中?
答案 0 :(得分:3)
当你应该和不应该使用它时,没有固定的规则。答案在于您的代码是否需要遍历在执行时不存在的DOM部分。如果需要按ID查找元素,可以使用它在代码执行之前构建DOM。如果您不关心DOM,那么您不需要使用它。
另一种方法是将脚本标记移动到body标记的底部,以便在加载DOM后执行它们。这样做没有什么主要的优点/缺点,但是它确实使得保持代码组织变得更加困难,同时使用$(document).ready()允许你将javascript保持在页面的头部,即使它需要最后执行。
答案 1 :(得分:2)
当代码需要元素准备就绪时,请使用$(document).ready(func)
,或仅使用$(func)
,例如使用选择器,与当时搞乱元素有关的任何事情。
当代码不需要元素时......例如。定义(不使用,定义)插件,不要将其包装在任何内容中。
当您需要加载/准备好和图片时,请改用$(window).load(func)
。
答案 2 :(得分:0)
如果您要处理DOM(即在任何标记或元素上),请确保DOM已准备就绪。如果这会导致您的延迟,请考虑制作更简单/更小的页面,以便加载更快。简单的$(document).ready()
函数通常在页面可视化呈现之前完成。
答案 3 :(得分:0)
如果我没弄错,$(document).ready(..)函数应该在DOMContentLoaded上运行,而不是等到Load事件被引发:
另一方面,$(文档).load(..)将在呈现DOM时执行,并且所有资产都被加载,如果您依赖页面上的资产属性(例如,图像尺寸)。
$(document).load(..)
功能是您网页上的<script>
标记,还是位于网页引用的外部JS文件中?在后一种情况下,延迟可能部分是由于脚本解析。
您是否尝试在页面底部放置一个全局<script>
标记,并在两种不同的方案中运行它 - 一次仅使用其中的$(document).load(..)
函数,再次使用其中的内容而是在脚本标记中加载函数。这两种情况之间的JS效果是否存在显着差异?