目录

一.事件处理

1.CDN

2.百度资源库

3.代码

二.动画功能

三.jQuery插件

四.jQuery封装原理

1.闭包的优点

2.代码

五.案例


一.事件处理

1.CDN

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技 术主要有内容存储和分发技术。

2.百度资源库

        原本在百度静态资源公共库中有很多依托CDN技术分发的文件,如jQuery的各版本文件,但是选现在度静态资源公共库已经挂了。所以给大家推荐字节跳动静态资源公共库,内容较为齐全。在搜索栏搜索jquery,在J栏找到jquery并点击,

jquery draggable参数详解 jquerycdn_jQuery

选择版本并点击,引入jQuery有两种方法,一种是引入js文件,另一种是直接令src为对应网址!

jquery draggable参数详解 jquerycdn_css3_02

 点击复制TAG(引入代码,就不用自己手敲了,直接黏贴即可),黏贴在代码里即可。

3.代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- <script src="../js/jquery-1.9.1.js" type="text/javascript" charset="UTF-8"></script> -->
		<script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/1.7/jquery.min.js" type="application/javascript"></script>
		<script type="text/javascript">
			/* ready事件:页面加载完执行的操作,相当于JS的onload*/
			// $(function(){})
			// jQuery(function(){})
			// $(document).ready(function(){})
			
			$(function(){
				/*****************事件的基础绑定******************/
				//其他事件的绑定方式和下面相同,换个事件名称就可以啦!!!
				//放在ready事件当中是为了将页面加载完就将单击事件绑定到对应按钮上
				$("#btn1").click(function(){
					alert("单击事件");
				})
				
				/*****************bind事件绑定******************/
				// $("#btn2").bind('click',function(){
				// 	alert("bind单击事件绑定");
				// });
				//适合同一对象绑定多个事件时使用,减小代码量,即json格式
				$("#text1").bind({
					'mouseover':function(){
						//输出到控制台
						console.log("鼠标放上bind");
					},
					'focus':function(){
						alert("光标移入");
					}
					//and so on
				})
				
				/*****************一次事件绑定******************/
				//只绑定一次,即事件执行一次之后就失效了
				$("#btn3").one('click',function(){
					alert("一次事件绑定");
				})
				
				/*****************trigger事件操作******************/
				$("#btn4").click(function(){
					// 调用其他对象的事件
					$("#btn1").trigger('click');
					$("#btn3").trigger('click');
				})
				
				/*****************事件的解绑******************/
				$("#btn5").click(function(){
					//解绑指定对象上的所有事件
					$("#btn1").unbind();
					//解绑指定对象上的指定事件
					$("#text1").unbind("focus");
				})
				
				// $(".btn6").click(function(){
				// 	alert("单击事件的绑定");
				// })
				//下面的方法可以增加元素,但不能增加相应事件
				$("body").append('<input type="button" name="" class="btn6" value="事件操作2" />');
				//执行如下操作可以使上面方法增加的元素绑定事件(live方法在1.7之前都可以用,之后不行)
				$(".btn6").live('click',function(){
					alert("btn6单击事件已绑定");
				})
			
			})//ready事件
			
			
			
		</script>
	</head>
	<body>
		<input type="button" name="" id="btn1" value="事件绑定" />
		<input type="text" name="" id="text1"/>
		<input type="button" name="" id="btn3" value="一次事件绑定"/>
		<input type="button" name="" id="btn4" value="trigger"/>
		<input type="button" name="" id="btn5" value="事件解绑" />
		<input type="button" name="" class="btn6" value="事件操作" />
	</body>
</html>

二.动画功能

了解即可。因为我本来也是为学后端学习铺垫而学的前端,所以浅尝辄止。

推荐一个插件库:www.jq22.com/   ,里面有很多现成的动画啥的,网页,功能啥的,五花八门的

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			#div1{
				height: 200px;
				background-color: #00A40C;
			}
			#div2{
				height: 200px;
				background-color: yellow;
				/* 隐藏 */
				/* display: none; */
			}
		</style>
		<script src="../js/jquery-1.9.1.js" type="text/javascript" charset="UTF-8"></script>
		<script type="text/javascript">
			$(function(){
				$("#btn1").click(function(){
					//获得div对象
					var div1=$("#div1");
					//3s内隐藏动画(渐变)
					//div1.hide(3000);
					//3s内显示动画(渐变)
					//div1.show(3000);
					//隐藏的显示,显示的隐藏
					//$("div").toggle(3000);
					//滑动上
					//div1.slideUp(3000);
					//滑动下
					//div1.slideDown(3000);
					//滑动上的变成滑动下,滑动下的变成滑动上
					//$("div").slideToggle(3000);
					//淡出
					div1.fadeOut(3000);
					// 淡入
					div1.fadeIn(3000);
				})
			})
		</script>
	</head>
	<body>
		<input type="button" id="btn1" value="动画触发" />
		<hr />
		<div id="div1"></div>
		<div id="div2"></div>
	</body>
</html>

三.jQuery插件

jQueryUI:略,想看的去菜鸟教程看看就行了,用的不多。

四.jQuery封装原理

1.闭包的优点

(1)可以减少全局变量的对象,防止全局变量过去庞大,导致难以维护
(2)防止可修改变量,因为内部的变量外部是无法访问的,并且也不可修改的。安全。
(3)读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

2.代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
		
		//()是函数执行符
		
		/***************匿名函数的自调用***************/
			// 无参数的匿名函数的执行
			// (function (){
			// 	alert("我是匿名函数"); 
			// })()
			
			//有参匿名函数的执行(匿名函数只执行第一个)
			// (function (a,b,c){
			// 	alert("我是匿名函数"+a+'---'+b+'---'+c);
			// })(100,200,300)
			
		/**************局部变量的挂载****************/
			(function (){
				var a=100;//局部变量
				//在运行的时候把a挂载到window对象上
				window.vv=a;
				alert(a);
			})()
			
			function test(){
				alert('调用匿名函数的局部变量'+window.vv);//等价于alert(vv);
			}
			test();
		/*****************闭包原理******************/
		function testA(){
			var a=10;
			function testB(){
				alert(a);
				var b=100;
				//window.tmp=b;
				return b;
			}
			var c=testB();
			//alert(tmp);
			alert(c);
		}
		testA();
		</script>
	</head>
	<body>
		 <h1>jQuery中的封装原理</h1>
		 <h2>匿名函数的自调用</h2>
		 <h3>闭包原理</h3>
		 <h4>
			 
		 </h4>
	</body>
</html>

五.案例

shopping_cart.html:

<html>
	<head>
		<title>jQuery操作表格</title>
		<meta charset="UTF-8"/>
		<!--声明css代码域-->
		<style type="text/css">
			tr{
				height: 40px;
			}
		</style>
	    <script src="../js/jquery-1.9.1.js" type="text/javascript" charset="UTF-8"></script>
		<script src="../js/shopping_cart.js" type="text/javascript" charset="UTF-8"></script>
		
	</head>
	<body>
		<h3>jQuery操作表格</h3>
		<hr />
		<input type="button" id="fx" value="反选" />
		<input type="button" id="addRow" value="新增一行" />
		<input type="button" id="delRow" value="删除行" />
		<input type="button" id="copyRow" value="复制行" />
		<table border="1px" cellpadding="10px" cellspacing="0" id="ta">
			<tr>
				<td width="50px"><input type="checkbox" name="chks" id="chks" value="1" /></td>
				<td width="200px">书名</td>
				<td width="200px">作者</td>
				<td width="200px">数量</td>
				<td width="200px">操作</td>
			</tr>
			<tr id="">
				<td><input type="checkbox" name="chk" id="" value="2"/></td>
				<td>《Java编程之道》</td>
				<td>wollo</td>
				<td>10</td>
				<td>
					<input type="button" name="aa" id="" value="修改数量" onclick="change(this)" />
					<input type="button" name="" id="" value="删除" onclick="del(this)"/>
				</td>
			</tr>
			<tr>
				<td><input type="checkbox" name="chk" id="" value="3" /></td>
				<td>《Python和我的故事》</td>
				<td>赵老师</td>
				<td>10</td>
				<td>
					<input type="button" name="" id="" value="修改数量" onclick="change(this)"/>
					<input type="button" name="" id="" value="删除" onclick="del(this)"/>
				</td>
			</tr>
			<tr>
				<td><input type="checkbox" name="chk" id="" value="4" /></td>
				<td>《web开发详解》</td>
				<td>张老师</td>
				<td>30</td>
				<td>
					<input type="button" name="" id="" value="修改数量" onclick="change(this)"/>
					<input type="button" name="" id="" value="删除" onclick="del(this)"/>
				</td>
			</tr>			
		</table>
	</body>
</html>

shopping_cart.js:

// 相当于window.onload()
$(function(){
	//确定全选和全不选的操作
	$("#chks").click(function(){
		//获取全选框是否全选
		var flag=$(this).prop("checked");
		//将各行的单选框相应全部勾选或全部不勾选
		$("input[name=chk]").prop("checked",flag);
	})
	
	//判断是否全选
	$("input[name=chk]").click(function(){
		var flag=true;
		//对象数组
		var chk=$("input[name=chk]");
		//each循环
		chk.each(function(){
			//如果有某行未勾选
			if(!$(this).prop("checked")){
				flag=false;
				return;
			}
		})
		$("#chks").prop("checked",flag);
	})
	
	//反选功能实现
	$("#fx").click(function(){
		//多选框对象数组
		var chx=$("input[name=chk]");
		chx.each(function(){
			//获得多选框的初始的状态
			var flag=$(this).prop("checked");
			$(this).prop("checked",!flag);
		})
	})
	
	//新添加一行的操作
	$("#addRow").click(function(){
		//获得table对象
		var tab=$("#ta");
		tab.append('<tr id="">'+
				'<td><input type="checkbox" name="chk" id="" value="2"/></td>'+
				'<td>《Java编程之道》</td>'+
				'<td>wollo</td>'+
				'<td>10</td>'+
				'<td>'+
				'	<input type="button" name="aa" id="" value="修改数量"  />'+
				'	<input type="button" name="" id="" value="删除" />'+
				'</td>'+
			'</tr>')
	})
	
	//删除操作
	$("#delRow").click(function(){
		//获得name属性为chk并且最左侧多选框被选中的input标签
		var del=$("input[name=chk]:checked");
		if(del.length==0){
			alert("至少选择一行");
		}else{
			del.parent().parent().remove();
		}
	})
	
	//复制行
	$("#copyRow").click(function(){
		//对象数组
		var copy=$("input[name=chk]:checked");
		if(copy.length==0){
			alert("至少选择一行");
		}else{
			//执行copy操作
			//复制当前行
			var tr=copy.parent().parent().clone();
			//粘贴
			$("#ta").append(tr);
		}
	})
})

//修改数量操作
//在标签中使用了onclick,即js代码,故不能放在$(function(){})中
function change(th){
	//th是js对象,需先转化为jQuery对象
	//tr结点
	var par=$(th).parent().parent();
	par.children().eq(3).html("<input type='text' size='3px' onblur='bul(this)'/>")
}
//失去焦点时操作
function bul(th){
	var par=$(th).parent().parent();
	par.children().eq(3).html(th.value);
}

//删除的操作
function del(th){
	var par=$(th).parent().parent();
	par.remove();
}