1.什么是 jQuery

jQuery是一个JavaScript库(框架),它通过封装原生的JavaScript函数得到一整套定义好的方 法。它的作者是John Resig,于2006年创建的一个开源项目,随着越来越多开发者的加入, jQuery已经集成了JavaScript、 CSS、 DOM和Ajax于一体的强大功能。它可以用最少的代码, 完成更多复杂而困难的功能,从而得到了开发者的青睐。

2.代码风格

在jQuery程序中,不管是页面元素的选择、内置的功能函数,都是美元符号“$”来起 始的。而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元 素选择或执行功能函数的时候可以这么写:
$(function () {});     //执行一个匿名函数
$(‘#box’);     //进行执行的ID元素选择
$(‘#box’).css(‘color’, ‘red’);     //执行功能函数
由于$本身就是jQuery对象的缩写形式,那么也就是说上面的三段代码也可以写成如下 形式:
jQuery(function () {});
jQuery(‘#box’);
jQuery(‘#box’).css(‘color’, ‘red’); 
jQuery中代码注释和JavaScript是保持一致的,有两种最常用的注释:单行使用“//...” , 多行使用“/* ... */” 。

3.jQuery的入门案例

引入Jquery库文件

你可以不用把库文件,下到本地,直接引用网络版的 
<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 引入Jquery库文件 -->
		<!-- <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> -->

		<!--你可以不用把库文件,下到本地,直接引用网络版的  -->
		<script src="https://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
	</head>
	<body>
		<button type="button">一个按钮</button>
		<script type="text/javascript">
			$('button').click(function() {
				alert("hello Jquery");
			})
		</script>
	</body>
</html>

4.jQuery的对象

美元符号,就是 jQuery 对象的缩写形式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<button type="button" id="btn">按钮</button>
		<script type="text/javascript">
		   //$ 美元符号,就是 jQuery 对象的缩写形式
			var btn=$('#btn');
			btn.click(function(){
				alert("点击了")
			})
			var btn2=jQuery('#btn');
			
			alert($==jQuery);
		</script>
	</body>
</html>

5.链式编程

执行了.css()这个功能函数后,最终返回的还是jQuery对象,那么也就 是说,jQuery的代码模式是采用的连缀方式,可以不停的连续调用功能函数。
$('#box').css('color', 'red').css('font-size', '50px'); //连缀

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="d1">
			
		</div>
		
		<script type="text/javascript">
			/* var obj=$('#d1');
			//返回的jquery对象
			var obj2=obj.css('height','200px');
			var obj3=obj2.css('width','200px');
			obj3.css('background-color','red'); */
			
			//上面的我们链式编程
			$('#d1').css('height','200px').css('width','200px').css('background-color','yellow');
		</script>
	</body>
</html>

6.加载模式

我们在之前的代码一直在使用$(function () {});这段代码进行首尾包裹,那么为什么必须 要包裹这段代码呢?原因是我们jQuery库文件是在body元素之前加载的,我们必须等待所 有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到。 在延迟等待加载,JavaScript提供了一个事件为load,方法如下:
window.onload = function () {}; //JavaScript等待加载
$(document).ready(function () {}); //jQuery等待加载

$(document).ready(function(){

});
加载的优点 只需要等待网页中的DOM结构 加载完毕,就能执行包裹的代码
简写方案: $(function () {     

alert(“加载了”);

});

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
		/* window.onload=function(){
			$('#btn').css('background','red');
		}	 */
		//Jquery也有自己的加载的事件 ready()
		/* $(document).ready(function(){
			$('#btn').css('background','red');
		})
		 */
		//简写方式 只需要等待网页中的DOM结构加载完成执行
		$(function(){
			$('#btn').css('background','red');
		})
	
		</script>
	</head>
	<body>
		<button type="button" id="btn">一个按钮</button>
	</body>
</html>

7.对象的互换

jQuery 对象虽然是 jQuery 库独有的对象,但它也是通过 JavaScript 进行封装而来的。 我 们可以直接输出来得到它的信息。

alert($); //jQuery 对象方法内部
alert($()); //jQuery 对象返回的对象,还是 jQuery
alert($('#box')); //包裹 ID 元素返回对象,还是 jQuery

从上面三组代码我们发现:只要使用了包裹后,最终返回的都是 jQuery 对象。这样的 好处显而易见,就是可以连缀处理。但有时,我们也需要返回原生的 DOM 对象,比如:

alert(document.getElementById('box')); //[object HTMLDivElement]

 var JqueryObj=$(原生DOM对象); 我们使用$() 包裹一下原生DOM对象,就会转换成Jquery对象了 jQuery 想要达到获取原生的 DOM 对象,可以这么处理:
alert($('#box').get(0)); //ID 元素的第一个原生 DOM
从上面 get(0),这里的索引看出,jQuery 是可以进行批量处理 DOM 的.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<button type="button" id="btn">一个按钮</button>
		<h1  id="myh1">奥德赛发送到发发</h1>
		
		<h2 id="my2">碍事法师打发士大夫撒旦法萨芬</h2>
	</body>
	<script type="text/javascript">
		//原生DOM对象
		var btn=document.getElementById('btn');
		//alert(btn);
		//如果你用的是原生DOM对象,那你就调用原生JS的方法和属性,不要去调用jQuery提供的方法和属性,当然你也 调用不到
		btn.style.backgroundColor="red";
		
		
		//使用jQuery来获取 返回的是Jquery对象
		// 如果你用的是Jquery对象,你也不要去调用原生JS的属性和方法。当然你也调用不到
		var obj=$('#btn');
		obj.css('','20px');
		//alert(obj);
		//console.log(obj);
		
		
		//原生DOM对象 和  Jquery对象的互转
		
		var myh=document.getElementById("myh1");
		//把原生DOM对象,转换成Jquery 对象  方式 $(原生DOM对象)
		$(myh).css('color','red');
		
		
		var jqueryObj=$('#my2');
		//把 Jquery 对象 转换成 原生DOM对象 使用jQuery提供的get()方法
		var ysDom=jqueryObj.get(0);
		ysDom.style.color="blue";
		
		
	</script>
</html>

8.jQuery选择元素的方式

常规选择器:

选择器

CSS模式

jQuery模式

描述

标签选择器

div{}

$(‘div’)

获取所有 div 元素的 DOM 对象

ID选择器

#box{}

$(‘#box’)

获取一个 ID 为 box 元素的 DOM 对象

类选择器(class)

.box{}

$(‘.box’)

获取所有 class 为 box 的所有 DOM 对象

进阶选择器:

选择器

CSS模式

jQuery模式

描述

群组选择器

span,em,.box {}

$('span,em,.box')

获取多个选择器的 DOM 对象

后代选择器

ul li a {}

$('ul li a')

获取追溯到的多个 DOM 对象

通配选择器

* {}

$('*')

获取所有元素标签的 DOM 对象

高级选择器:

选择器

CSS 模式

jQuery 模式

jQuery 等价方法

描述

后代选择器

ul li a {}

$('ul li a')

find('p')

获取追溯到的多个 DOM 对象

子选择器

div > p {}

$('div >p')

children()

只获取子类节点的多个 DOM 对象

next 选择器

div + p {}

$('div + p')

next()

只获取某节点后一个同级 DOM对象

nextAll 选择器

div ~ p {}

$('div ~ p')

nextAll()

获取某节点后面所有同级 DOM对象

属性选择器:

CSS 模式

jQuery 模式

描述

a[title]

$('a[title]')

获取具有这个属性的 DOM 对象

a[title=num1]

$('a[title=num1]')

获取具有这个属性=这个属性值的 DOM对象

a[title^=num]

$('a[title^=num]')

获取具有这个属性且开头属性值匹配的DOM 对象

a[title$=num]

$('a[title$=num]')

获取具有这个属性且结尾属性值匹配的DOM 对象

a[title*=num]

$('a[title*=num]')

获取具有这个属性且属性值含有一个指定字串的 DOM 对象

a[title!=num]

$('a[title!=num]')

获取具有这个属性且不等于属性值的DOM 对象

过滤选择器:

过滤器名

jQuery 语法

jQuery对应的方法

说明

返回

:first

$('li:first')

first()

选取第一个元素

单个元素

:last

$('li:last')

last()

选取最后一个元素

单个元素

:eq(index)

$('li:eq(2)')

eq(2)

选择索引(0 开始)等于 index 的元素

单个元素

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		 <h1 class="myh1">aaaaaaaaaaaaaaaaaaaaa</h1>
		
		<script type="text/javascript">
			//使用 css选择器语法
			var obj=$('.myh1'); //选中了多个,返回的是jQuery对象,不是js的数组
			console.log(obj);
			console.log(obj.length);
			//你要设置他们的样式,直接设置,不需要遍历,除非你单独设置那个,你遍历判断
			obj.css('color','red');
			$(obj[0]).css('background-color','yellow');
			//可以使用一个get方法
			obj.get(1).style.background="green";
			
			//可以使用 eq(索引)  返回的还是jQuery对象 
			obj.eq(3).css('background','pink');
			//如果你要遍历,你要用jQuery提供的遍历方法
		 	obj.each(function(index,ele){ //ele 原生DOM对象
				//alert(index+"==="+ele);
				ele.style.backgroundColor="blue";
				$(ele).css('font-size',"50px");
			})  
		</script>
	</body>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="d1">
			<h1>
				<span id="">
					aaaaaaaaaaaaaaaaaaa
				</span>
			</h1>
			
			<ul>
				<li>asfsdf</li>
				<li>asfsdf</li>
				
				<li>asfsdf</li>
				<li>asfsdf</li>
				<li>asfsdf</li>
				
				<li>asfsdf</li>
				<h1>阿斯顿发顺丰</h1>
			</ul>
			
			<h2>asdfadsfdasfdsaf</h2>
			<h3>阿是发是的发送到发送到</h3>
		</div>
		<script type="text/javascript">
			//	$('div h1 span')
			//使用 find方法层层往里找的方法
			var sp = $('div').find('h1').find('span');
			sp.css('color', 'red');
			
			//选择子元素的方法
			var li=$('ul').children('li');
			li.css('background','pink');
			
			$('h2').next().css('background','green');
		</script>

	</body>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<h1>asdfasdfasdfs</h1>
		<h1>asdfasdfasdfs</h1>
		<h1>asdfasdfasdfs</h1>
		<h1>asdfasdfasdfs</h1>
		<h1>asdfasdfasdfs</h1>
		<h1>asdfasdfasdfs</h1>
		<h1>asdfasdfasdfs</h1>
		<h1>asdfasdfasdfs</h1>
		<h1>asdfasdfasdfs</h1>
		<h1>asdfasdfasdfs</h1>
	</body>
	<script type="text/javascript">
		var obj=$('h1');
		obj.first().css('color','pink');
		obj.last().css('color','red');
		//你用get方法,转换成原生DOM对象
		obj.get(2).style.background="red";
		//用eq方法,返回的还是jQuery对象
		obj.eq(5).css('background','yellow');
	</script>
</html>

9.html()和text()方法

方法名

描述

html()

获取元素中 HTML 内容

html(value)

设置元素中 HTML 内容

text()

获取元素中文本内容

text(value)

设置原生中文本内容

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<h1 id="myh1">这是一行标题</h1>
		
		<div id="">
			
		</div>
	</body>
	<script type="text/javascript">
	// innerHTML  innerText
		//var text=$('#myh1').text();
		//alert(text);
		//$('#myh1').text("HEllO");
		
		$('#myh1').text($('#myh1').text()+"HEllO");
		
		$('div').html('<h1>这是一行标题22222</h1>')
		
	</script>
</html>

10.操作属性的方法

方法名

描述

attr(key)

获取某个元素 key 属性的属性值

attr(key, value)

设置某个元素 key 属性的属性值

attr({key1:value2, key2:value2...})

设置某个元素多个 key 属性的属性值

attr(key, function (index, value) {})

设置某个元素 key 通过 fn 来设置

removerAttr(属性名称)      根据属性名称移除某个属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<h1>阿斯顿发送到发送到</h1>
	</body>
	<script type="text/javascript">
	   var obj=document.getElementsByTagName("h1")[0];
	  // obj.setAttribute("align","center");
	  // obj.removeAttribute("align");
	  
	  // $(obj).attr("align","center");
	  
	  //  $(obj).removeAttr("align");
	  
	  var attrObj={
		  'align':'center',
		  'id':'myh1',
		  'class':'myclass'
	  }
	  	  
	  $(obj).attr(attrObj);
	</script>	
</html>

11.CSS样式的操作

方法名

描述

css(name)

获取某个元素行内的 CSS 样式

css([name1, name2, name3]) 

获取某个元素行内多个 CSS 样式 注意返回的是JSON对象 键是属性名值是属性值

css(name, value)

设置某个元素行内的 CSS 样式

css(name, function (index, value) )

设置某个元素行内的 CSS 样式

css({name1 : value1, name2 : value2})

设置某个元素行内多个 CSS 样式

addClass(class)

给某个元素添加一个 CSS 类

addClass(‘class1 class2 class3...’)

给某个元素添加多个 CSS 类

removeClass(class)

删除某个元素的一个 CSS 类

removeClass(‘class1 class2 class3...’)

删除某个元素的多个 CSS 类

toggleClass(class)

来回切换默认样式和指定样式

toggleClass(class1 class2 class3...)

同上

toggleClass(class, switch)

来回切换样式的时候设置切换频率

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			.a {
				font-size: 50px;
				color: blue;
			}

			.b {
				font-size: 50px;
				color: red;
				background: yellow;
			}
		</style>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="">

		</div>
		<h1 class="a">asdfasdfasdfasdf</h1>
		<button type="button">切换</button>
	</body>

	<script type="text/javascript">
		//	$('div').css('width','100px').css('height','100px').css('background','red');

		var cssObj = {
			'width': '200px',
			'height': '200px',
			'background': 'red'
		}

		$('div').css(cssObj);

		//添加 class属性
		//$('h1').addClass('a');

		$('button').click(function() {
			//切换class
			$('h1').toggleClass('b');
		})


		var w = $('div').width();
		var h = $('div').height();
		alert(w)
		alert(h)
	</script>
</html>

12.内部插入节点操作

DOM 中有一个非常重要的功能,就是节点模型,也就是 DOM 中的“M” 。页面中的元 素结构就是通过这种节点模型来互相对应着的,我们只需要通过这些节点关系,可以创建、 插入、替换、克隆、删除等等一些列的元素操作。

方法名

描述

append(content)

向指定元素内部后面插入节点 content

append(function (index, html) {})

使用匿名函数向指定元素内部后面插入节点

appendTo(content)

将指定元素移入到指定元素 content 内部后面

prepend(content)

向指定元素 content 内部的前面插入节点

prepend(function (index, html) {})

使用匿名函数向指定元素内部的前面插入节点

prependTo(content)

将指定元素移入到指定元素 content 内部前面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<h1>111111111111111111111111</h1>
		<div id="d1">
			<h2>22222222222222222</h2>
		</div>
		<h5>44444444444444444444444444444444444</h5>
		<div id="d2">
			<h3>333333333333333333333333333333333</h3>
		</div>
	</body>
	<script type="text/javascript">
		// var btn=document.createElement("button");
		// btn.innerText="一个按钮";
		// document.body.appendChild(btn);
		 //创建一个标签
		var btn=$('<button>一个按钮</button>');
		//添加子元素
		$('body').append(btn);
		//把h1 移动到 div里面的原来子元素的后面
		$('h1').appendTo('#d1');
		
		
		
		var btn2=$('<button>一个按钮222222</button>');
		
		$('#d2').prepend(btn2);
		
		//把h5移动到div里面在原来子元素的前面
		$('h5').prependTo('#d2');
		
	</script>
</html>

13.外部插入节点操作

方法名

描述

after(content)

向指定元素的外部后面插入节点 content

after(function (index, html) {})

使用匿名函数向指定元素的外部后面插入节点

before(content)

向指定元素的外部前面插入节点 content

before(function (index, html) {})

使用匿名函数向指定元素的外部前面插入节点

insertAfter(content)

将指定节点移到指定元素 content 外部的后面

insertBefore(content)

将指定节点移到指定元素 content 外部的前面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<h1>11111111111111111111111111111</h1>
		<div id="d1">
			阿帆发送到发送到发算法算法 
		</div>
		<h4>4444444444444444444444444444444444444444444</h4>
	</body>
	<script type="text/javascript">
	//在h1的下面添加一个h2
		$('h1').after('<h2>22222222222222222222222</h2>')
		//在h1的上面添加换一个h3
		$('h1').before('<h3>3333333333333333333333333333333</h3>')
		//把h4移动到 div的前面
		$('h4').insertBefore('#d1');
		
		//insertAfter(content)
		//把h4移动到 div的下面
		$('h4').insertAfter('#d1');		
	</script>
</html>

14.包裹节点

方法名

描述

wrap(html)

向指定元素包裹一层 html 代码

wrap(element)

向指定元素包裹一层 DOM 对象节点

wrap(function (index) {})

使用匿名函数向指定元素包裹一层自定义内容

unwrap()

移除一层指定元素包裹的内容

wrapAll(html)

用 html 将所有元素包裹到一起

wrapAll(element)

用 DOM 对象将所有元素包裹在一起

wrapInner(html)

向指定元素的子内容包裹一层 html

wrapInner(element)

向指定元素的子内容包裹一层 DOM 对象节点

wrapInner(function (index) {})

用匿名函数向指定元素的子内容包裹一层

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		
		<h1>11111</h1>
		<h1>11111</h1>
		<h1>11111</h1>
		<h1>11111</h1>
		<h1>11111</h1>
		
		<h2>2222222222222</h2>
		<h2>2222222222222</h2>
		<h2>2222222222222</h2>
		<h2>2222222222222</h2>
		<h2>2222222222222</h2>
	</body>
	<script type="text/javascript">
	    //给每一个h1外面套一个div
		$('h1').wrap('<div></div>');
		
		//给所有的h2看做一个整体,外面套一个div
		$('h2').wrapAll('<div></div>');
		
		//去除包裹
		//$('h2').unwrap();
	</script>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>

		<div id="d1">
			<h1>1111</h1>
			<h1>1111</h1>
			<h1>1111</h1>
			<h1>1111</h1>
			<h1>1111</h1>
		</div>
		
		<script type="text/javascript">
		// 给div里面所有的h1子元素整体外面包裹一个div
			$('#d1').wrapInner('<div></div>');
		</script>
	</body>
</html>

15.删除节点

删除子元素,可以认为是清空子元素。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<h1 id="myh1">asfffffffffffffffffffffffffff</h1>
		
		<div id="d2">
			<h2>222222</h2>
			<h2>222222</h2>
			<h2>222222</h2>
			<h2>222222</h2>
			<h2>222222</h2>
			<h2>222222</h2>
			<h2>222222</h2>
			<h2>222222</h2>
			<h2>222222</h2>
			<h2>222222</h2>
		</div>
	</body>
	<script type="text/javascript">
		//删除节点
		$('#myh1').remove();
		
		//删除子元素,可以认为是清空子元素。
		$('#d2').empty();
	</script>
</html>

16.事件的绑定

jQuery 通过.bind()方法来为元素绑定这些事件。

$('input').bind('click', function () {
       //点击按钮后执行匿名函数 alert('点击!');
});

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<button type="button">一个按钮</button>
	</body>
	<script type="text/javascript">
	//bind(事件名,事件处理函数)
		$('button').bind('click',function(){
			//alert("hello");
			//$('button').css('background','red');
			//注意把this 转换成JQuery对象
			$(this).css('background','red');
		})
		
		//解绑
		//$('button').unbind('click');
	</script>
</html>

17.绑定多个事件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<button type="button">一个按钮</button>
	</body>
	<script type="text/javascript">
	//bind(事件名,事件处理函数)
		/* $('button').bind('click',function(){
			//注意把this 转换成JQuery对象
			$(this).css('background','red');
		})
		$('button').bind('mouseover',function(){
			$(this).css('background','yellow');
		}) */
		
		
		//连缀绑定多个事件
		$('button').bind('click',function(){
			//注意把this 转换成JQuery对象
			$(this).css('background','red');
		}).bind('mouseover',function(){
			$(this).css('background','yellow');
		}).bind('mouseout',function(){
			$(this).css('background','pink');
		})
		
		//解绑某个事件
		$('button').unbind('click');
		//可以一次解绑所有事件,不传参即可
		$('button').unbind();
	</script>
</html>

18.解绑多个相同的事件

//绑定了两个事件函数
$('input').bind('click', fn1);
$('input').bind('click', fn2);
$('input').unbind('click', fn1); //只删除 fn1 处理函数的事件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<button type="button">一个按钮</button>
	</body>
	<script type="text/javascript">
	
		var a=function(){
			//注意把this 转换成JQuery对象
			alert("11111")
			$(this).css('background','red');
		};
		var b=function(){
			alert("22222")
			$(this).css('background','yellow');
		}
		
		//连缀绑定多个事件
		$('button').bind('click',a).bind('click',b)
		
		//解绑某个事件 
		$('button').unbind('click',b); //第二个参数是事件处理函数
		
	</script>
</html>

19.事件的简写方式

复合事件:

方法名

描述

ready(fn)

当 DOM 加载完毕触发事件

hover([fn1,]fn2)

当鼠标移入触发第一个 fn1,移出触发 fn2

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<button type="button">一个按钮</button>
	</body>
	<script type="text/javascript">
	$(document).ready(function(){
		//常用的事件类型,都提供了对应的方法。
			$('button').click(function() {
				alert("abc");
			})
		/* 	
			$('button').mouseover(function(){
				$(this).css('background','red')
			}).mouseout(function(){
				$(this).css('background','blue')
			})
			 */
			//移上移出,综合成一个方法
			$('button').hover(function(){
				//处理鼠标移上
				$(this).css('background','red')
			},function(){
				//处理鼠标移出
				$(this).css('background','blue')
			})
	})
		
	</script>
</html>

20.事件对象

事件对象就是 event 对象,通过处理函数默认传递接受。之前处理函数的 e 就是 event 事件对象,event 对象有很多可用的属性和方法,

//通过处理函数传递事件对象
$(‘input’).bind(‘click’, function (e) { //接受事件对象参数                
alert(e);
});

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<button type="button">一个按钮</button>
	</body>
	
	<script type="text/javascript">
		//event 事件对象,Jquery 对事件对象,没有做任何处理,我们还是事件对象的属性和方法
		
		//事件对象,你直接在处理函数上接收就行。
		$('button').click(function(e){
			//alert(e.type);
			$(e.target).css('background','red');
			//e.preventDefault()

			//e.stopPropagation()
		})
		
	</script>
</html>

21.事件的自动触发 

浏览器一打开自动触发我们绑定的事件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<button type="button">一个按钮</button>
	</body>
	
	<script type="text/javascript">
		$('button').click(function(){
			alert("点击了");
		}).trigger('click'); 
		
	//$(‘button’).trigger(‘click’); //浏览器一打开自动触发该点击事件


	</script>
</html>

22.推荐使用的绑定事件的方法

目前绑定事件和解绑的方法 在 jQuery1.7 以后推出了.on()和.off()方法彻底摒弃bind()和unbind()。 老方式 绑定事件 bind()   新方式  on()
老方式 解绑事件 unbind()  新方式 off()
以后推荐使用新方式来绑定和解绑事件

One 表示事件执行一次
//类似于.bind()只触发一次
$('.button').one('click', function () {
        alert('one 仅触发一次!');
});

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<button type="button">一个按钮</button>
		
		<ul>
			<li>asdfasdfasdf</li>
			<li>asdfasdfasdf</li>
			<li>asdfasdfasdf</li>
			<li>asdfasdfasdf</li>
			<li>asdfasdfasdf</li>
			<li>asdfasdfasdf</li>
			
		</ul>
	</body>
	
	<script type="text/javascript">
	//	bind() unbind() 方法 在3.0新版中已经废弃了
	//  新版本推荐使用 on() off() 来绑定和解绑事件。
	
	/* $('button').on('click',function(){
		alert("hello")
	}) */
	
	//$('button').off('click');
	
	//事件只执行一次
	$('button').one('click',function(){
		alert("hello")
	})
	
	</script>
</html>

23.显示隐藏动画

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			div{
				height: 200px;
				width: 200px;
				background: red;
			}
		</style>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="">
			
		</div>
		<button type="button">显示</button>
		<button type="button">隐藏</button>
		<button type="button">切换</button>
	</body>
	<script type="text/javascript">
		$('button').first().click(function(){
			$('div').show(2000);
		})
		$('button').eq(1).click(function(){
			$('div').hide(2000);
		})
		
		$('button').last().click(function(){
			$('div').toggle(2000);
		})
	</script>
</html>

24.上卷下拉动画

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			div{
				height: 200px;
				width: 200px;
				background: red;
			}
		</style>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="">
			
		</div>
		<button type="button">上卷</button>
		<button type="button">下拉</button>
		<button type="button">切换</button>
	</body>
	<script type="text/javascript">
		$('button').first().click(function(){
			$('div').slideUp(1000);
		})
		$('button').eq(1).click(function(){
			$('div').slideDown(1000);
		})
		
		$('button').last().click(function(){
			$('div').slideToggle(1000)
		})
	</script>
</html>

25.淡入淡出动画

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			div{
				height: 200px;
				width: 200px;
				background: red;
			}
		</style>
		<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="">
			
		</div>
		<button type="button">淡入</button>
		<button type="button">淡出</button>
		<button type="button">切换</button>
	</body>
	<script type="text/javascript">
		$('button').first().click(function(){
			$('div').fadeIn(1000);
		})
		$('button').eq(1).click(function(){
			$('div').fadeOut(1000);
		})
		
		$('button').last().click(function(){
			$('div').fadeToggle(1000);
		})
	</script>
</html>