咱们继续说JS,咱们经常在页面加载完成之后作一些操做,好比一些元素的显示与隐藏、一些动画效果。咱们一般有两种方法来完成这个事情,一个就是window.onload事件,另外一个就是JQuery的ready()方法。那么这 两种方法有什么区别呢?往下看:动画
onload事件,是在页面中全部元素以及内容所有加载完成之后触发的;而ready()方法,则是在页面的DOM结构加载完毕之后就被触发了。也就是说ready()方法会在onload事件以前执行。spa
举一个例子:
假设有一个表现图库的页面,这种页面中可能会包含许多大型图像,咱们能够经过jQuery隐藏、显示或以其余方式操做这些图像。若是咱们经过onload页面设置界面,那么用户在可以使用这个页面以前,必需要等到每一幅图像都下载完成。更糟糕的是,若是行为稍微添加给哪些具备默认行为的元素(好比连接),那么用户的交互可能会致使意想不到的结果。然而当咱们试用$(document).ready(){ }进行设置时,这个界面就会更早地准备好可用的正确行为。
使用$(document).ready(){ }通常来讲都要优于试用onload事件处理程序,但必需要明确一点的是,由于支持文件可能尚未家在完成,因此相似图像的高度和宽度这样的属性此时不必定有效。
code
onload事件一般写成以下形式: blog
function myfunction() { //your code }; window.onload = myfunction;
或者: 事件
window.onload = function(){ //your code };
ready()方法一般以下: io
$(document).ready(function(){ //your code });
或者: function
$().ready(function(){ //your code });
再或者: class
$(function(){ //your code });
接下来再看两个例子: 下载
function first(){ alert("first"); } function second(){ alert("second"); } window.onload = second; window.onload = first;
这段代码会弹出“first”。 程序
function first(){ alert("first"); } function second(){ alert("second"); } $(document).ready(function(){ first(); }); $(document).ready(function(){ second(); });
上面这段代码会分别弹出“first”和“second”。
为何会这样呢?由于onload是一个事件,它只能绑定一个值,后面的会覆盖前面的;而ready()是一个方法,方法之间不会互相影响,因此会顺序执行。
OK,作了以上对比,onload和ready()的区别已经很明显了,什么状况下用谁也不用我多说了吧!