jQuery $(document).ready()和JavaScript onload事件

对元素的操作和事件的绑定需要等待一个合适的时机,可以看下面的例子:

<!DOCTYPE html>
<meta charset="utf-8">
<html>

<head>
    <title>1-1</title>
    <script type="text/javascript">
        document.getElementById("panel").onclick = function () {
            alert("元素已经加载完毕 !");
        }
        /*执行错误*/
    </script>
</head>

<body>
<div id="panel">click me.</div>
</body>

</html>

 如果这样,还没有等待元素加载完就绑定事件,

  浏览器Console中会报错:

  TypeError: document.getElementById(...) is null

  更改一下时机,下面三个程序都是可以成功绑定事件的,点击元素之后会弹出相应的alert().

  第一种是把事件绑定放在body里,元素之后:

<!DOCTYPE html>
<meta charset="utf-8">
<html>

<head>
    <title>1-2</title>
</head>

<body>
<div id="panel">click me.</div>
<script type="text/javascript">
    document.getElementById("panel").onclick = function () {
        alert("元素已经加载完毕 !");
    }
    /*正确执行*/
</script>
</body>

</html>

第二种是放在window.onload中进行事件绑定:

<!DOCTYPE html>
<meta charset="utf-8">
<html>

<head>
    <title>1-3</title>
    <script type="text/javascript">
        window.onload = function () {
            document.getElementById("panel").onclick = function () {
                alert("元素已经加载完毕 !");
            }
        }
    </script>
</head>

<body>
<div id="panel">click me.</div>
</body>

</html>

第三种是jQuery的ready()方法传入绑定事件的方法:

<!DOCTYPE html>
<meta charset="utf-8">
<html>

<head>
    <title>Panel</title>
    <script src="jquery-1.11.2.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            document.getElementById("panel").onclick = function () {
                alert("元素已经加载完毕 !");
            }
        })
    </script>
</head>

<body>
<div id="panel">click me.</div>
</body>

</html>

jQuery $(document).ready()和window.onload

根据ready()方法的API说明http://api.jquery.com/ready/

这个方法接收一个function类型的参数ready(handler), 方法的作用是: Specify a function to execute when the DOM is fully loaded.

即当DOM加载完毕的时候,执行这个指定的方法.

  因为只有document的状态ready之后,对page的操作才是安全的.

  $(document).ready()仅在DOM准备好的时候执行一次.

  与之相比,load事件会等到页面渲染完成执行,即等到所有的资源(比如图片)都完全加载完成的时候.

  $(window).load(function(){…})会等整个页面,不仅仅是DOM,还包括图像和iframes都准备好之后,再执行.

  而ready()是在DOM准备好之后就执行了,即DOM树建立完成的时候.所以通常ready()是一个更好的时机.

  如果DOM初始化完成之后再调用ready()方法,传入的新的handler将会立即执行.

  注意:ready()方法多次调用,传入的handler方法会串联执行(追加).

  而JavaScript中,window.onload是赋值一个方法,即后面的会覆盖掉前面的.

$(document).ready()的三种简写

 $( document ).ready( handler )
 $().ready( handler ) (this is not recommended)
 $( handler )

window对象和document对象

 Window对象表示浏览器中打开的窗口: http://www.w3school.com.cn/jsref/dom_obj_window.asp

 Document对象表示载入浏览器的HTML文档: http://www.w3school.com.cn/jsref/dom_obj_document.asp

Event对象

  Event即事件,代表了各种状态:http://www.w3school.com.cn/jsref/dom_obj_event.asp

  事件句柄使我们可以在事件发生的时候附加一些操作和处理,比如按钮点击事件发生的时候,进行什么什么操作.

  上面的参考链接中含有一个属性列表,对应各种事件,可以利用这些属性定义事件的行为.

  本文关注的onload就是其中一个事件.

onload事件

  onload事件: http://www.w3school.com.cn/jsref/event_onload.asp

  onload事件是在加载完成后立即发生.(注意其中的l是小写).

  支持该事件的标签是:

  <body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>

  支持该事件的JavaScript对象是:

  image, layer, window.

  注意这里并没有document.

onload使用解析

  最常用的就是window.onload, 会等到整个页面及各种资源都加载完成之后再执行后面赋值的function行为.

  另外,可以在标签中使用onload,比如:

<body onload="inlineBodyOnloadTimeCounter();">

  其中inlineBodyOnloadTimeCounter()是一个自定义的JavaScript function.

  注意jQuery ready()的API文档中有这么一段:

The .ready() method is generally incompatible with the attribute. If load must be used, either do not use .ready() or use jQuery‘s .load() method to attach load event handlers to the window or to more specific items, like images.

说明ready()方法和<body onload=“”>是不兼容的.

注:文章来源于转载。

时间: 2024-08-03 17:10:06

jQuery $(document).ready()和JavaScript onload事件的相关文章

$(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法

$(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法接触JQuery一般最先学到的是何时启动事件.在曾经很长一段时间里,在页面载入后引发的事件都被加载 在”Body”的Onload事件里.对于Body的Onload事件和JQuery的Ready方法相比,有很多弊端.比如:1.加载 多个函数的问题<body ></body>在Onload事件中 只能这样加载,很丑陋…而在JQuery中你可以利用多个JQuery.Ready()

[Javascript]jquery $(document).ready() 与window.onload的区别

引用:http://www.jb51.net/article/21628.htm Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间         window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行.         $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同      

jQuery $(document).ready()和window.onload

jQuery $(document).ready()和window.onload 根据ready()方法的API说明http://api.jquery.com/ready/. 这个方法接收一个function类型的参数ready(handler), 方法的作用是: Specify a function to execute when the DOM is fully loaded. 即当DOM加载完毕的时候,执行这个指定的方法. 因为只有document的状态ready之后,对page的操作才是

jQuery中$(document).ready()和window.onload的区别

 $(document) ready()和window onload在表面上看都是页面加载时我们就去执行一个函数或动作,但是在具体的细节上$(document) ready()和window onload还是有区别的. 最基本的区别 1.执行时间 window.onload必须等到页面内包括图片.flash等的所有元素加载完毕后才能执行.$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 如<p>图片视频等</p>(假设页面只有这一个标签),wi

$(document).ready() 和 window.onload 方法比较

说明 页面加载文档完毕后,浏览器会通过 Javascript 为 DOM 元素添加事件. Javascript 使用 window.onload 方法,而 jQuery 使用 $(document).ready() 方法. $(document).ready() 方法可以极大的提高 Web 应用程序的相应速度,因为该方法可以在 DOM 载入就绪时就对其进行操纵并调用执行给它绑定的方法. 在使用过程中, $(document).ready() 方法 和 window.onload 方法之间有细微的

$(document).ready(...) 和 window.onload 的区别

$(document).ready(...) 和 window.onload:事件虽然具有类似的效果,但是,它们在触发操作的时间上存在着微妙的差异. 1.window.onload:      当一个文档完全下载到浏览器中时,会触发 window.onload 事件.这意味着页面上的全部元素对 javascript 而言都是可以访问的,这种情况对编写功能性的代码非常有利,因为无需考虑加载的次序. 2.$(document).ready():      通过 $(document).ready()

document.ready和window.onload的区别

document的ready事件通常会比window的onload事件先发生,为什么呢? 因为document的ready是在浏览器加载解析并构建完doc文档模型时发生的,而window的onload是整个文档的内容加载完成时才会发生. 举个很简单的例子: 1个页面有几十张比较大的图片(img),当网速慢的时候最能看出效果,访问这个页面浏览器就会先去构建doc模型,然后再去请求图片,在构建doc模型完成就会执行document的ready事件,而window的onload事件得要等所有图片加载完

jquery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较

想要添加这个效果,先来弄明白页面的加载和事件执行顺序,看这个简单例子: 1 <html xmlns="http://www.w3.org/1999/xhtml"> 2 <head > 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4 <title>验证加载顺序</title> 5 <s

$(document).ready和window.onload,细微小区别,ready是jQuery的方法,onload是window的方法

$(document).ready和window.onload的区别 $(document).ready和window.onload都是在都是在页面加载完执行的函数,大多数情况下差别不大,但也是有区别的. $(document).ready:是DOM结构绘制完毕后就执行,不必等到加载完毕. 意思就是DOM树加载完毕,就执行,不必等到页面中图片或其他外部文件都加载完毕.并且可以写多个.ready. window.onload:是页面所有元素都加载完毕,包括图片等所有元素.只能执行一次. 原文地址: