把JS放在body尾部,还有必要用JQuery的$(document).ready()方法吗?

我觉得如果JS放在尾部的话,浏览器已经渲染过页面了吧,不知道JS这时候用$(document).ready()或者JS原生的DOMContentLoaded事件吗?还有什么用?本人还处于JS入门,望了解页面渲染过程的人来说说这方面的知识。

阅读 7k
7 个回答

一般是不需要的,但是$(document).ready()同时可以作为触发事件的条件,触发时机就是当DOM加载完成时。

最好是加上,不过不加影响也不大。
浏览器是顺序加载网页的
如果放在前面,浏览器会在加载 DOM 前加载并执行那些代码(执行代码耗费时间的话后面的DOM也是要等到执行完再加载),如果其中有涉及 dom 操作的代码必然会失败。
如果放到最后,就是在代码前面的 DOM 加载完毕后加载并执行这些代码(如果代码有操作后面的dom也会失败)。所以说放到最后因为执行代码的时候几乎所有DOM都加载完了,所以一般也不会出问题。
$(document).ready()这句也是在所在的位置执行,但不同的是这句只是定义并注册了一个函数,函数代码并没有执行,而是在所有DOM加载完毕之后执行,所以只要你代码不出错就不会有问题。
所以,建议是加上,实在太懒不加也行

如果js代码放在文档末尾是不用onload()的,同理,jq代码放在末尾也可以不用ready()

应该是一样的效果,之所以js放到最后,也就是为了防止页面加载阻塞,但是其中onload是在页面Dom和其他元素都加载完之后触发,而$(document).ready()是在页面Dom加载之后触发,就是$(document).ready()是快于onload的。

个人感觉还是有必要加上的。虽然不加大多数时候都不会出错,但是有的时候也会出问题,具体没有深入学习过。
比如学习angular的时候,

// 作用相当于ng-app 有点类似声明模块的意思
angular.bootstrap(document, ['app']);

直接这样写就没有效果,加个window.onload就有效果了,我也不知道为什么— -!

持久的习惯->优秀的规范->低误差率->高生产率->提升价值
看,每一个小的习惯,积少成多,就是价值的来源。
简约计算,相当于你的体重不是按猪肉价在卖了,而是升级到了新西兰进口流肉的价了啊,兴奋否?!

有必要的吧,如果做一些DOM操作,元素定位什么的应该需要的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题