文章目录
什么JQuery
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的avaScript框架。jQuery设计的宗旨是“write Less,Do More”,它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
JQuery的作用
0.快速获取文档元素
 1.简化js的Dom树的操作
 2.将我们页面的JS代码和HTML页面代码进行分离
 …
jQuery的引入
引入与测试:
 
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 引入jQuery -->
		<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
		<!-- 测试jQuery -->
		<script>
			$(function(){
				alert("引入jQuery了");
			});
		</script>
	</head>
	<body>
		
	</body>
</html>
  文档加载完成事件js与JQuery写法对比
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 引入jQuery -->
		<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
		<!-- 文档加载完成事件js与JQuery写法对比 -->
		<script>
			
			/*使用js,文档加载完成的事件*/
			window.onload = function(){
				alert("使用js,window.onload");
			}
			
			/*使用jQuery,文档加载完成的事件*/
			jQuery(document).ready(function(){
			 	alert("jQuery(document).ready(function()");
			});
		
			/*jQuery简写成 $ */
			$(document).ready(function(){
			 	alert("$(document).ready(function()");
			});
			
			/*最简单的写法 */
			$(function(){
				//写在这个函数中的代码,就是文档加载完毕之后执行的
				alert("$(function(){");
			});
				
		</script>
	</head>
	<body>
		
	</body>
</html>
  JQuery使用的注意点:
1.使用jQuery的选择器获取到的对象就是jQuery对象,否则就是js对象。
 2.针对jQuery对象的命名,前面加上一个$以示区分。
 3.jQuery对象只能调用jQuery框架里面的方法,js对象调用js的方法。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<!--引入jQuery文件-->
<script src="../js/jquery-3.3.1.js"></script>
<!--使用jQuery来编写js代码-->
<script>
    //获取div中的文本内容
    $(function () {
    
       	//根据id获取div标签
       	/* 使用jQuery的选择器获取到的对象就是jQuery对象,否则就是js对象 针对jQuery对象的命名,前面加上一个$以示区分 */
        var $d = $("#d1");
        
        //获取标签里面的文本,jQuery对象只能调用jQuery框架里面的方法
        var content = $d.html();
        alert(content)
    })
</script>
<body>
    <div id="d1">jQuery</div>
</body>
</html>
  扩展:开发版本与生产版本(部署项目时用的版本)
开发版本与生产版本的源码是一样的,命名为jQuery-x.x.x.js为开发版本,命名为jQuery-x.x.x.min.js为生产版本。开发版本源码格式良好,方便开发人员查看源码,但体积大。而生产版本去掉了换行和空行,没有代码缩进和注释,不方便开发人员查看源码,体积小。
jQuery对象与js对象之间的转换
将js对象转换成jQuery对象: $(js对象)
示例:
var d = document.getElementById("d1");//js对象
var content=$(d).html();//js对象转换成jQuery对象并使用jQuery的方法得到其内容
将jQuery对象转换成js对象(jQuery对象是一个数组,这个数组里面的每一个元素都是js对象):遍历出来每一个元素
示例:
var $d = $("#d1");//jQuery对象
var content=$d[0].innerHTML;//jQuery对象转换成js对象并使用js的方法得到其内容
  jQuery的选择器
基本选择器
| 选择器名称 | 语法 | 解释 | 
|---|---|---|
| 标签选择器 | $(“html标签名”) | 获得所有匹配标签名称的元素 | 
| id选择器 | $("#id的属性值") | 获得与指定id属性值匹配的元素 | 
| 类选择器 | $(".class的属性值") | 获得与指定的class属性值匹配的元素 | 
层级选择器
| 选择器名称 | 语法 | 解释 | 
|---|---|---|
| 后代选择器 | $("A B ") | 选择A元素内部的所有B元素(A内的B全选) | 
| 子选择器 | $(“A > B”) | 选择A元素内部的所有B子元素 (A内的儿子级的B才选,即儿子以下的不选) | 
| 相邻兄弟选择器(找同级的下一个) | $("#one + div") | 找到 id 为 one 的下一个兄弟 | 
| 找出后面同级元素 | $("#two ~ div") | 找到id为two的元素后面的所有兄弟 | 
属性选择器
| 选择器名称 | 语法 | 解释 | 
|---|---|---|
| 属性选择器 | $(“A[属性名]”) | 找包含指定属性名的元素 | 
| 属性选择器 | $(“A[属性名=‘属性值’]”) | 找包含属性名等于该属性值的元素 | 
| 属性选择器 | $(“标签[属性名!=‘属性值’]”) | 找包含属性名不等于该属性值的元素 | 
| 属性选择器 | $(“标签[属性名 ^=‘属性值’]”) | 找包含属性名以该属性值开始的元素 | 
| 属性选择器 | $(“标签[属性名 $=‘属性值’]”) | 找包含属性名以该属性值结束的元素 | 
| 属性选择器 | $(“标签[属性名 *=‘属性值’]”) | 找包含属性名且含有该属性值的元素 | 
| 复合属性选择器 | $(“A[属性名=值] [属性名 *= ‘xx’]…”) | 找包含多个属性条件的元素 | 
基本过滤选择器
| 选择器名称 | 语法 | 解释 | 
|---|---|---|
| 首元素选择器 | 选择器 :first | 获得选择的元素中的第一个元素 | 
| 尾元素选择器 | 选择器:last | 获得选择的元素中的最后一个元素 | 
| 非元素选择器 | 选择器 :not(selecter) | 不包括指定内容的元素 | 
| 偶数选择器 | 选择器:even | 偶数,从 0 开始计数 | 
| 奇数选择器 | 选择器 :odd | 奇数,从 0 开始计数 | 
| 等于索引选择器 | 选择器 :eq(index) | 指定索引元素 | 
| 大于索引选择器 | 选择器 :gt(index) | 大于指定索引元素 | 
| 小于索引选择器 | 选择器:lt(index) | 小于指定索引元素 | 
| 标题选择器 | 选择器 :header | 获得标题元素,固定写法 | 
表单属性选择器
| 选择器名称 | 语法 | 解释 | 
|---|---|---|
| 可用元素选择器 | 选择器 :enabled | 获得可用表单项 | 
| 不可用元素选择器 | 选择器:disabled | 获得不可用元素 | 
| 选中选择器 | 选择器(如:input:checkbox):checked | 获得单选/复选框选中的元素 | 
| 选中选择器 | 选择器(如:option):selected | 获得下拉框选中的元素 | 
jQuery的DOM操作
jQuery对DOM树中的文本和值进行操作
| API方法 | 解释 | 
|---|---|
| val() / val(“value”) | 相当于js的value属性,获得/设置元素value属性相应的值(只能获取表单属性标签的value) | 
| text() / text(“value”) | 相当于js的innerText属性,获得/设置元素中的文本内容(标签体) | 
| html() / html(“value”) | 相当于js的innerHTML属性,获得/设置元素中的html内容 (标签体) | 
注:val(),text(),html()不传入参数,就表示获取属性相应的值,传入参数,就表示设置属性。
jQuery对DOM树中的属性进行操作
| API方法 | 解释 | 
|---|---|
| attr(“属性名”) / attr(“属性名”,“属性值”) | 获得/设置属性的值,一般都使用这个方法 | 
| prop(“属性名”) / prop(“属性名”,“属性值”) | 获得/设置属性的值(checked,selected),boolean类型的属性 | 
| removeAttr(“属性名”) | 移除某一个属性 | 
注:attr()方法可以获取和设置任意标签的任意属性,但是如果该属性是boolean类型,则使用prop()方法
什么时候使用prop()方法: 获取和设置属性值为boolean类型的属性
什么时候使用attr()方法: 获取和设置属性值不为boolean类型的属性
使用jQuery操作标签的css样式
| API方法 | 解释 | 
|---|---|
| css(“属性名”," 属性值 ") | 设置指定的CSS样式 | 
| addClass(类样式名) | 给指定的对象添加新的类样式,指定类样式名字即可 | 
| removeClass(类样式名) | 删除指定的类样式 | 
jQuery添加标签
| API方法 | 解释 | 
|---|---|
| append(element) | 添加到最后一个子元素后面,两者之间是父子关系 | 
| prepend(element) | 添加到第一个子元素前面,两者之间是父子关系 | 
| before(element) | 添加到当前元素的前面,两者之间是兄弟关系 | 
| after(element) | 添加到当前元素的后面,两者之间是兄弟关系 | 
注:appendTo()方法,prependTo()方法是 某标签(调用者)调用该方法添加到一个标签中,而调用者应是jq对象。如是js对象,则可把js对象转为jq对象,即 $("<a></a>")(创建a元素的jQuery对象)。
......
<select id="city">
		<option value="">--选择市--</option>
</select>
......
$("<option></option>").html(江西).appendTo("#city");
  jQuery删除标签
| API方法 | 解释 | 
|---|---|
| remove() | 删除指定元素 | 
| empty() | 清空指定元素的所有子元素 | 
扩展
| API方法 | 解释 | 
|---|---|
| clone() | 复制一个标签 | 
| addClass(“类名”) | 添加类名 | 
| removeClass(“类名”) | 移除类名 | 
| toggleClass(“类名”) | 切换类名 | 
jQuery的动画
| 使用方法 | 效果 | 
|---|---|
| jQuery对象.show(毫秒值, 函数对象) | 显示 | 
| jQuery对象.hide(毫秒值, 函数对象) | 隐藏 | 
| jQuery对象.toggle(毫秒值, 函数对象) | 切换 | 
| jQuery对象.slideDown(毫秒值, 函数对象) | 滑动显示(窗帘效果) | 
| jQuery对象.slideUp(毫秒值, 函数对象) | 滑动隐藏 (窗帘效果) | 
| jQuery对象.slideToggle(毫秒值, 函数对象) | 滑动切换 | 
| jQuery对象.fadeIn(毫秒值, 函数对象) | 淡入显示 | 
| jQuery对象.fadeOut(毫秒值, 函数对象) | 淡出隐藏 | 
| jQuery对象.fadeToggle(毫秒值, 函数对象) | 淡入淡出切换 | 
参数说明:
 毫秒值:动画要用多长时间执行完成
 函数对象:动画执行完毕之后,浏览器调用的函数对象(可不写)
jQuery的事件方法
| js的事件 | jQuery的事件 | 
|---|---|
| onclick (点击事件) | click(fn) | 
| ondblclick (双击事件) | dblclick(fn) | 
| onmousedown | mousedown(fn) | 
| onmouseup | mouseup(fn) | 
| onmouseover | mouseover(fn) | 
| onmouseout | mouseout(fn) | 
| onmousemove | mousemove(fn) | 
| onkeydown | keydown(fn) | 
| onkeyup | keyup(fn) | 
| onkeypress | keypress(fn) | 
| onsubmit (提交事件) | submit(fn) | 
| onchange (失去焦点后值改变了) | change(fn) | 
| onload (页面加载完成事件 ) | $(fn) | 
| onfocus | focus(fn) | 
| onblur (失去焦点) | blur(fn) | 
参数说明:
 fn:触发的响应行为作为对象传给jQuery的事件的方法中
jQuery事件和js事件对比:
- jQuery事件和js事件,写法不同,但是意义相同
 - js事件名称带on;jQuery事件名称不带on
 - js事件是属性;jQuery事件是方法
 - js事件响应行为是属性值;jQuery事件响应行为是方法的实参
 
扩展:事件切换
鼠标移入移出切换函数写法:
jQuery对象.hover(fn1, fn2)
  说明:鼠标移入时,执行fn1, 鼠标移出时,执行fn2
jQuery对象.hover(fn)
  说明:鼠标移入、移出,使用共同的响应行为fn
  jQuery的事件绑定与解绑
- on绑定事件
 
jQuery元素对象.on(事件名称,function(){
    //逻辑代码
})
说明:事件名称是jQuery的事件方法的方法名称,例如:click。当响应是则执行逻辑代码
  - off解绑事件
 
jQuery元素对象.off(事件名称);
说明:参数事件名称如果省略不写,可以解绑该jQuery对象上的所有事件
  - 给后来添加的元素(未来元素)绑定或解绑事件(一个元素里的子元素绑定事件之后,又新增或了修改的新元素)
 
给未来元素绑定事件:jQuery对象.on("事件名称","给jQuery对象里的哪些元素绑定(写选择器)", fn)
给未来元素解绑事件:jQuery对象.off("事件名称","给jQuery对象里的哪些元素解绑(写选择器)")
  jQuery的循环遍历
js的循环遍历
for(var i=0; i<<元素数组.length; i++){
   元素数组[i];
}
  jQuery的循环遍历
1.jQuery框架的全局each方法:
$.each(jquery对象,function(index,element){});
说明:
index:就是元素在集合中的索引 
element:就是集合中的每一个元素对象
jQuery框架全局each方法可以循环遍历任何能够循环的对象,不论是js对象还是jQuery对象
示例:
$.each($("li"), function (index, element) {
       alert("索引:" + index + ", 元素内容:" + element.innerHTML)
})
2.jQuery对象的each方法:
jQuery对象.each(function(index, element){})
3.新增的遍历写法(jQuery3.0新特性for of语句遍历):
for(var item of items){
   item;
}
说明:items:要遍历的元素数组  item:遍历出的元素
  jQuery简单案例
网页定时弹出广告(定时器+JQ动画)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 引入jQuery -->
		<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
		<!--
		1. 导入JQ相关的文件
		2. 文档加载完成事件: $(function(){})   启动定时器  setTimeout
		3. 确定相关操作的事件:2秒后显示广告,过3秒隐藏广告
		4. 事件触发函数: slideDown();   slideUp();
		5. 函数里面再去操作相关的元素  $("#img1").slideDown();  $("#img1").slideUp();
		-->
		<script>
			//文档加载完成
			$(function(){
				setTimeout(function(){
					//2秒后显示广告
					$("#img1").slideDown();
					setTimeout(function(){
						//3秒后隐藏广告
						$("#img1").slideUp();
					},3000)
				},2000)
			})
		</script>
	</head>
	
	<body>
		<img src="img/show.jpg" id="img1" width="100%"  style="display: none"/>
	</body>
	
</html>
  表格的隔行换色(JQ选择器)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
		<script src="js/jquery-3.3.1.js"></script>
		
		<script>
			
			$(function(){
				//获得所有的行:层级选择器
								//偶数行变色(从0开始计数):基本过滤选择器
								$("tbody > tr:even").css("background-color","red");
								//奇数行变色:基本过滤选择器
								$("tbody > tr:odd").css("background-color","blue");			
			});
	
		</script>
	</head>
	<body>
		<table border="1px" width="600px" id="tab" align="center">
				<thead>
					<tr >
						<td>
							<input type="checkbox" />
						</td>
						<td>分类ID</td>
						<td>分类名称</td>
						<td>分类商品</td>
						<td>分类描述</td>
						<td>操作</td>
					</tr>
				</thead>
				
				<tbody>
					<tr>
					<td>
						<input type="checkbox" />
					</td>
					<td>1</td>
					<td></td>
					<td></td>
					<td></td>
					<td>
						<a href="#">修改</a>|<a href="#">删除</a>
					</td>
				</tr>
				
				<tr>
					<td>
						<input type="checkbox" />
					</td>
					<td>2</td>
					<td></td>
					<td></td>
					<td></td>
					<td><a href="#">修改</a>|<a href="#">删除</a></td>
				</tr>
				
				<tr>
					<td>
						<input type="checkbox" />
					</td>
					<td>3</td>
					<td></td>
					<td></td>
					<td></td>
					<td><a href="#">修改</a>|<a href="#">删除</a></td>
				</tr>
				
				<tr>
					<td>
						<input type="checkbox" />
					</td>
					<td>4</td>
					<td></td>
					<td></td>
					<td></td>
					<td><a href="#">修改</a>|<a href="#">删除</a></td>
				</tr>
				
				<tr>
					<td>
						<input type="checkbox" />
					</td>
					<td>5</td>
					<td></td>
					<td></td>
					<td></td>
					<td><a href="#">修改</a>|<a href="#">删除</a></td>
				</tr>
				</tbody>
			</table>
			
		</body>
</html>
  全选-全不选-反选(选择器的使用+JQ对DOM树属性操作)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery-3.3.1.js"></script>
		<script>
			
			//实现全选和全不选功能
			//给全选按钮绑定点击事件
			function checkAll(obj){
				//设置所有子选框的选中状态和全选框一样,即设置其"checked"属性
				$(".itemSelect").prop("checked",obj.checked)
			}
			
			//实现反选功能
			//给反选按钮绑定点击事件
			function reverseCheck(){
				//方法一
				// //遍历出每一个子选框
				// for (var i = 0; i < $(".itemSelect").length; i++) {
				// //设置该子选框的选中状态和原来的状态相反
				// $(".itemSelect")[i].checked=!$(".itemSelect")[i].checked
				// }
				
				//方法二
				//将所有的子选框每个都点击一遍,也可实现发选
				$(".itemSelect").click()
			}
			
			//解决问题:当所有子选框都选中的时候,全选框才选中,有一个子选框不选中那么全选框也不选中。
			//文档加载完成事件
			$(function(){
					//实现点击子选框控制全选框的选中状态
					//这里使用点击事件,实现反选功能时要使用方法二,这样反选时也能实现子选框控制全选框的选中状态效果
					$(".itemSelect").click(function(){
						//选中的子选框个数=总子选框个数,代表所有子选框都选中,则全选框也选中
						$("#all").prop("checked",$(".itemSelect").length == $(".itemSelect:checked").length)
					})				
			})
			
		</script>
	</head>
	<body>
			<table id="tab1" border="1" width="800" align="center" >
				<tr>
					<td colspan="5"><input type="button" id="reverse" onclick="reverseCheck()" value="反选"></td>
				</tr>
				<tr>
					<th><input type="checkbox" id="all" onclick="checkAll(this)" ></th>
					<th>分类ID</th>
					<th>分类名称</th>
					<th>分类描述</th>
					<th>操作</th>
				</tr>
				<tr>
					<td><input type="checkbox" class="itemSelect"></td>
					<td>1</td>
					<td></td>
					<td></td>
					<td><a href="">修改</a>|<a href="">删除</a></td>
				</tr>
				<tr>
					<td><input type="checkbox" class="itemSelect"></td>
					<td>2</td>
					<td></td>
					<td></td>
					<td><a href="">修改</a>|<a href="">删除</a></td>
				</tr>
				<tr>
					<td><input type="checkbox" class="itemSelect"></td>
					<td>3</td>
					<td></td>
					<td></td>
					<td><a href="">修改</a>|<a href="">删除</a></td>
				</tr>
				<tr>
					<td><input type="checkbox" class="itemSelect"></td>
					<td>4</td>
					<td></td>
					<td></td>
					<td><a href="">修改</a>|<a href="">删除</a></td>
				</tr>
			</table>
		</body>
</html>
  省市联动效果(JQ遍历+JQ的DOM操作)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="js/jquery-3.3.1.js"></script>
		<script>
			
			var cities = [
				["深圳市","东莞市","惠州市","广州市"],//provinces[0] -->广东省的市
				["长沙市","岳阳市","株洲市","湘潭市"],//provinces[1] -->湖南省的市
				["厦门市","福州市","漳州市","泉州市"],//provinces[2] -->福建省的市
				["赣州市","南昌市","九江市","景德镇市"]//provinces[3] -->江西省的市
			];
			
			
			
			/* 1. 导入JQ的文件 2. 文档加载事件:页面初始化 3. 确定事件: change事件 ***触发函数: 得到当前选中省份,根据选中的省份得到城市信息, 遍历城市数据,将遍历出来的城市添加到城市的select中 */
			$(function(){
				
				$("#province").change(function(){
					// alert(this.value); // select的索引,从0开始(广东省)
					//得到选中的省份的城市信息
					var citiesInSelectedProvinces = cities[this.value];
					
					//清空城市select中的option
					//采用JQ的方式清空
					$("#city").empty();  
					
					//遍历城市数据,参数i:citiesInSelectedProvinces的索引 参数n:对应索引的值(元素对象)
					$(citiesInSelectedProvinces).each(function(i,n){
						$("#city").append("<option>"+n+"</option>");
					});
				});
				
				//方法二:
				/* $("#province").change(function(){ //清除掉city里原有的下拉选项,留一个提示选项 $("#city").html("<option value=''>--选择市--</option>"); //获取到省的值,根据省获取市的数据 var myCities = cities[this.value];//字符串数组 $(myCities).each(function(){ //创建标签,把当前市的名称设置到option标签里 $("<option></option>").html(this).appendTo("#city"); }); }); */
	
			});
	
		</script>
	</head>
	
	<body>
		<!--选择省份-->
		<select id="province">
			<option value="-1" >--选择省--</option>
			<option value="0">广东省</option>
			<option value="1">湖南省</option>
			<option value="2">福建省</option>
			<option value="3">江西省</option>
		</select>
		<!--选择城市-->
		<select id="city">
			<option value="-1">--选择市--</option>
		</select>
	</body>
	
</html>
  抽奖案例(实现定时调用的函数+JQ的DOM操作)
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="js/jquery-3.3.1.js"></script>
</head>
<body>
<!-- 奖品变换框 -->
<div style="border-style:dotted;width:160px;height:100px">
    <img id="img1ID" src="img/00.png" style="width:160px;height:100px"/>
</div>
<!-- 获奖显示框 -->
<div style="border-style:double;width:430px;height:330px;position:absolute;left:300px;top:10px">
    <img id="img2ID" src="img/00.png" width="430px" height="330px"/>
</div>
<!-- 开始抽奖按钮 -->
<input  id="startID"  type="button"  value=  style="width:50px;height:50px;font-size:5px"  onclick="imgStart()">
<!-- 停止按钮 -->
<input  id="stopID"  type="button"  value="停止"  style="width:50px;height:50px;font-size:5px"  onclick="imgStop()">
<script language='javascript' type='text/javascript'>
    //准备一个一维数组,奖项图片
    var imgs = [
        "img/00.png",
        "img/01.png",
        "img/02.png",
        "img/03.png",
        "img/04.png",
        "img/04.png"
    ];
	var timer = null;
	   function imgStart() {
		//防止重复点击开始按钮,创建多个timer,点击停止时小像框还会变换。
	       if (timer === null) {
	       		//setInterval(code,millisec[,"lang"]) 方法可按照指定的周期(以毫秒计)来调用函数。 
	       			//参一(code ):必须有,要调用的函数或要执行的代码。参二(millisec):必须有,周期性执行或调用 code 之间的时间间隔,以毫秒计。
	       			//返回值:一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。
	           timer = setInterval(function () {
				//切换奖品变换框的图片:根据奖项图片数组的索引,通过Math随机生成奖项图片数组的索引值,通过索引值得到图片对象,使用attr(“属性名”,“属性值”)方法更改img标签的src属性,属性值即随机索引值得到图片对象。 
				//根据奖项图片数组得到索引index范围:[0, 5] 要使用整数取随机数 
				// Math.random()的范围是: [0, 1) * 6 ==> [0, 6) ==>向下取整 ==> [0, 5]
	             var index = Math.floor(Math.random() * 6);
	             var imgSrc = imgs[index];
	             $("#img1ID").attr("src", imgSrc);
	           }, 10);
	       }
	   }
	   function imgStop() {
	       clearInterval(timer);
	       timer = null;
	       //获取小像框里图片的路径, 把路径设置到大像框里
	       var imgSrc = $("#img1ID").attr("src");
	       $("#img2ID").attr("src", imgSrc);
	}
</script>
</body>
</html>
  
京公网安备 11010502036488号