Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么普通javascript不需要$(document).ready像jQuery一样?_Javascript_Jquery - Fatal编程技术网

为什么普通javascript不需要$(document).ready像jQuery一样?

为什么普通javascript不需要$(document).ready像jQuery一样?,javascript,jquery,Javascript,Jquery,在完成JavaScript课程后,我目前正在学习jQuery。文档中说,ready方法等待DOM完成加载。然而,我有两点很好奇。 1) 由于脚本标记通常添加在body标记的末尾,因此如果没有ready方法,DOM不应该已经完成加载吗。 2) 如果我们需要jQuery中的ready方法,为什么在编写普通JavaScript时也不需要它呢?1)由于脚本标记通常添加在body标记的末尾,没有ready方法DOM不应该已经完成加载了吗 是的,您是对的,如果在正文末尾添加了脚本标记,则不需要使用$(doc

在完成JavaScript课程后,我目前正在学习jQuery。文档中说,
ready
方法等待DOM完成加载。然而,我有两点很好奇。 1) 由于脚本标记通常添加在body标记的末尾,因此如果没有
ready
方法,DOM不应该已经完成加载吗。 2) 如果我们需要jQuery中的
ready
方法,为什么在编写普通JavaScript时也不需要它呢?

1)由于脚本标记通常添加在body标记的末尾,没有ready方法DOM不应该已经完成加载了吗

是的,您是对的,如果在正文末尾添加了脚本标记,则不需要使用
$(document).ready()
包装代码,因为DOM元素已经可以在代码中使用

2)如果我们需要jQuery中的ready方法,为什么在编写普通JavaScript时也不需要它呢?

jQuery等价于
$(document).ready()

DOMContentLoaded事件在初始HTML文档完全加载和解析后激发,而不等待样式表、图像和子帧完成加载

请注意:您也可以使用
defer
属性

此布尔属性设置为向浏览器指示脚本将在解析文档之后、但在触发DOMContentLoaded之前执行


可能重复吹毛求疵,在解析所有DOM之后,但在触发DOMContentLoaded之前,将执行具有
defer
属性的脚本。因此,如果您在页面底部的内联脚本中,并且需要触发一些延迟脚本,那么您仍然必须等待DOMContentLoaded。@kaido,你说得对……在更新的答案中提到:)