zoukankan      html  css  js  c++  java
  • jQuery为啥要提供一个load()方法?


      上午的时候,找个闲暇事件整理之前整理的一些关于jQuery的东西,看到了一个之前做的jQuery的$(document).ready()与window.onload()方法的比較。

    上面两个方法最重要的差别在于:$(document).ready()的触发实际是HTML的这棵DOM树建建立的时候,就触发了这个ready()函数的运行。可是windows.onload()方法则是在DOM树建立之后,而且DOM中带有URL属性的元素都被载入到本地之后,才会去运行。


      说的简单一点。就是一个页面载入分成三个步骤:
    1)浏览器接收到纯文本的HTML
    2)HTML依据XHTML的规则,将其解析成为一个DOM树
    3)浏览器遍历DOM中带有再次请求信息的节点,比如image。通过这些节点上的信息。将远程的资源获取到本地(或者是从cache中获取)
      然后,经过浏览器的解析之后,你看到的就是整个页面了。


      
      当中。$(document).ready()方法的触发时机是在第二步结束,而window.onload()方法的出发时机则是在第三步结束之后。


      联想到一个问题,假设我须要在document.ready()方法中。获取图像的大小应该怎么办呢?由于ready()方法的触发时机被人为的提前了,带来了非常多优点。可是也必定存在类似这种弊端。jQuery还是考虑到了这种情况,而且做了对应的解决方式,在他的文档里面,有一个load()方法,就是用来解决这种问题。

    直接把代码copy上来吧。注意onload方法适用于以下几个对象:images、frames、scripts、window对象。


    <span style="font-family:KaiTi_GB2312;font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    	<head>
    		<script type="text/javascript" src="jquery-1.3.1.js"></script>
    		<script type="text/javascript">
    			$(function(){
    				$("#image").load(function(){
    					alert($("#image").width());
    				});
    			})
    		</script>
    	</head>
    	<body>
    		<select multiple="multiple">
    			<option value="1">Oracle</option>
    			<option value="2">Java</option>
    			<option value="3">C++</option>
    		</select>
    		<img id="image" 
    		src="http://t1.baidu.com/it/u=2624739849,4151443416&fm=32&picname=8441c36b01d987e6ca8054e6d69615f8.jpg">
    	</body>
    </html>
    </span>



        这就是jQuery提供了load()方法的主要考虑了。

  • 相关阅读:
    牛人读书 列表
    设计模式 简介
    java 并发编程 list
    Spring Boot 概念知识
    JS原生Date类型方法的一些冷知识
    JavaScript 操作 Cookie
    nodeJS(express4.x)+vue(vue-cli)构建前后端分离详细教程(带跨域)
    Vue学习笔记(一)
    windows下常查看端口占用方法总结
    webstorm添加*.vue文件代码提醒支持webstorm支持es6vue里支持es6写法
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5137306.html
Copyright © 2011-2022 走看看