1.jquery简介
Jquery是继prototype之后又一个优秀的Javascript框架。它是轻量级的js库 ,它兼容CSS3,兼容
各种浏览器(IE6+,FF1.5+,safari2.0+,opera9.0+)
jquery凭借简洁的语法,出色的兼容性,小巧的体积迅速占领前端开发这一阵地。
它极大地简化了js开发人员遍历html文档,操作DOM,处理事件,执行动画和开发ajax的操作。

2.jquery的优势
(1)轻量级
(2)强大的选择器
(3)出色的DOM操作封装
(4)完善的事件和事件对象兼容机制
(5)完善的ajax
(6)不污染全局变量($可以随时交出控制权)
(7)出色的浏览器兼容
(8)方便的链式操作
(9)隐式迭代(一般情况下不需要for循环遍历dom对象)
(10)完善的文档(官方文档相当完备,官方blog每次更新都会有详细说明)
这里给大家提供一份中文的jQuery开发文档:链接
(11)丰富的插件

例如下面这个:

<!doctype html>
<html lang="en">
<head>
	<title>demo1</title>
</head>
<body>
	<a href="#">aaaaaaaaaaaaaaaaaaa</a>
	<!-- 当页面加载完毕的时候,我要让a标签的文字变成红色
	当我点击这个a标签的时候,我需要让这个a标签有一个黄色的边框-->
	<script>
		alert(1);
		var a=document.getElementsByTagName('a')[0];
		a.style.color="red";
		a.οnclick=function(){
		    this.style.border="10px solid #f90";
		}
	</script>
</body>
</html>


我们利用jQuery可以改写成这样:


<!doctype html>
<html lang="en">
<head>
	<title>demo1</title>
	<script src="jquery-1.8.0.min.js"></script>
</head>
<body>
	<a href="#">aaaaaaaaaaaaaaaaaaa</a>
	<!-- 当页面加载完毕的时候,我要让a标签的文字变成红色
	当我点击这个a标签的时候,我需要让这个a标签有一个绿色的边框-->
	<script>
		alert(1);
		var a=$('a');
		a.css('color','red').click(function(){
			$(this).css('border','10px solid #38a38a');
		});
		
	</script>
</body>
</html>

可以看到原来获取一个节点对象要写很长的语句,用jQuery就很简洁。onclik事件也不用分开去写,十分方便。



关于隐式迭代,我们来看下一个样例:


<!doctype html>
<html lang="en">
<head>
	<meta charset="GBK">
	<title>demo2</title>
</head>
<body>
	<p>我是第1个标签</p>
	<p>我是第2个标签</p>
	<p>我是第3个标签</p>
	
	<!-- 当我点击每个p标签的时候,我要弹出当前p标签里的内容 -->
	<script>
		var p=document.getElementsByTagName('p');
		
		for(var i=0;i<p.length;i++){
			p[i].οnclick=function(){
				alert(this.innerHTML);
			};  
		}
	</script>
</body>
</html>


使用jQuery改写为:


<!doctype html>
<html lang="en">
<head>
	<meta charset="GBK">
	<title>demo2</title>
	<script src="jquery-1.8.0.min.js"></script>
</head>
<body>
	<p>我是第1个标签</p>
	<p>我是第2个标签</p>
	<p>我是第3个标签</p>
	
	<!-- 当我点击每个p标签的时候,我要弹出当前p标签里的内容 -->
	<script>
		var p=$('p');
		p.click(function(){
			alert($(this).html());
		});
	</script>
</body>
</html>


可以看到,使用jQuery我们可以不使用for循环,实际上是使用了隐式循环,一般情况下不需要for循环遍历dom对象,很灵活。



3.jquery的不足

(1)不能向后兼容。


新版本可能不兼容早期版本,如果想要升级jquery版本可能会付出额外的维护成本



(2)插件兼容


和上一点相同



(3)插件之间的冲突


如果在同一张页面上引用多个插件时,可能会引起冲突现象,特别是用这些插件依赖


相同事件或相同选择器时最容易出错,虽然这不是jquery本身的错误。



(4)在大型框架框架中,特别是在开发后台UI框架的时候,jquery对于动画支持相对来说不太给力,需要用引用jquery UI来进行弥补



4.获取jquery,版本的选择

(1)官方网站:

http://www.jquery.com



(2)cdn获取:


a) 谷歌CDN:

http://www.google-jquery-cdn.com/


b) 百度CDN:

http://developer.baidu.com/wiki/index.php?title=docs/cplat/libs


c) 微软CDN:

http://msdn.microsoft.com/zh-cn/library/ee517318.aspx


d) 新浪CDN:

http://sae.sina.com.cn/?m=devcenter&catId=147



5.jQuery的引入

(1)引入jquery


<script src="jquery-1.8.0.min.js"></script>


(2)引入CDN的jquery


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.2/jquery.min.js"></script>


(3)优先引入CDN上的jquery,如果失效再引入本地的jquery


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="jquery-1.8.0.min.js"></script>')</script>


6.编写第一个jquery程序

<script>
    $(document).ready(function(){
        alert('hello world!!!');
    });
</script>


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

由于html是自上而下读取的文档流,如果javascript代码写在html中文档的前面,而导致先读取javascript代码后读取html文档,造成html文档流失。



如果将代码包裹在window.onload中就会防止这种情况:


<!doctype html>
<html lang="en">
<head>
	<meta charset="GBK">
	<title>demo2</title>
	<script>
		window.οnlοad=function(){
			alert(1);
		}
	</script>
</head>
<body>
	<p>我是文字</p>
	
</body>
</html>

弹出对话框的同时会将下面的“我是文字”加载出来



jQuery使用的是$(document).ready()


那么$(document).ready()和window.onload有什么不同呢?



不同点1:

执行时机

window.onload执行时机:等网页中所有的资源加载完毕后(包括图片,flash,音频,视频)才能执行。



$(document).ready()执行时机:等dom树加载完毕后就可以执行



不同点2:

编写个数

window.onload只能写一个,而$(document).ready()可以写N个



不同点3:

简化写法

window.onload无简化写法,而$(document).ready()简化方法可以写为$(function(){})



测试:

<!doctype html>
<html lang="en">
<head>
	<meta charset="GBK">
	<title>demo2</title>
	<script src="jquery-1.8.0.min.js"></script>
	<script>
		$(document).ready(function(){
			alert('我是jQuery的');
		});
	
		$(function(){
			alert('我是简写的');
		});
	</script>
</head>
<body>
	<p>我是文字</p>
	
</body>
</html>