前端——JQuery(一)


jQuery是一个快速、简洁的轻量级JavaScript框架,封装JavaScript常用的功能代码

jQuery的使用

要使用jQuery需要加入对应js包,1.x和2.x版本不再更新
jquery-3.3.1.js
在HTML还需要引入jquery
<script type="text/javascript" src="jquery-3.3.1.js"></script>
<head>
<meta charset="UTF-8">
<title>js入门</title>
<script type="text/javascript" src="jquery-3.3.1.js"></script>
<script type="text/javascript">
	window.onload=function(){//js加载方式
		alert("js");
	}
	//页面加载函数,页面加载完毕后执行 
	$(function(){//jQuery加载方式——ready事件的简写
		alert("jQuery1")
	}
			
	//或者
	jQuery(document).ready(//jQuery加载方式——ready事件
		function(){
			alert("jQuery2")
		}		
	);
</script>
</head>
<body>
	<div>div</div>
</body>
js与jQuery加载的区别:
1.js传统的页面加载方式存在同名覆盖问题	
2.js会等整个页面加载完毕(包括内容<比如图片等>)后才会执行代码,效率较慢
3.jQuery当整个dom树绘制完毕就会加载,加载比js快
4.jQuery不存在覆盖问题,且是按照顺序执行

js代码和jQuery代码最好写在body内部的最下方,这些代码引用元素对象时,页面还未加载完成的话就无法获取,
或者使用window.onload=function(){//具体代码}等待页面加载完成后获取元素对象
或者使用jQuery的$(function(){ //具体代码})等待DOM加载完成后获取元素对象

jQuery对象

jQuery对象就是通过jQuery包装DOM对象后产生的对象,一般使用$()来表示
$()/ jQuery() / window.jQuery()这三者是等价的
$其实是jQuery库中定义的一个全局变量,用于表示jQuery这个对象
obj instanceof jQuery 查看一个对象是否是jQuery对象,返回true/false

jquery对象,是jquery特有的对象,只有调用jquery框架才存在
jQuery对象无法使用js对象的任何方法
js对象也不能使用jQuery里的方法。
jQuery变量一般在变量名前加$以示区别

将js对象转为jQuery对象:
var v_dom  =document.getElementById("name"); js对象中的element元素对象
var $q = $(v_dom);将js对象转为jQuery对象
将jQuery对象转为js对象: 	jQuery对象.get(index)或者jQuery对象[index]
var j = $("#d1").get();
var j = $("#d1")[0];
jQuery实质是DOM对象组成的集合
<body >
	<div id="d1">这是一个div标签</div>
	<script type="text/javascript">	
		//1.js获取对象并绑定事件 		
			document.getElementById("d1").onclick=function(){
				this.style.color = "red";
			}  		
	</script>
</body>
<body >
	<div id="d1">这是一个div标签</div>
	<script type="text/javascript">
		//2.jQuery获取对象并绑定事件
		$("#d1").click(
				function(){ // this表示当element元素对象(js对象)
				   $(this).css('color','red'); //jQuery对象.css()  设置对象的css样式
				}
		);
	</script>
</body>

jQuery选择器

jQuery对象一般都是通过选择器来获取
id选择器——$("#id属性值")
class选择器——$(".class属性值")
标签选择器——$("标签名")
通用选择器——$("*")
组合选择器——$("#id属性值, class属性值, 标签名") 选择多种标签对象
层级选择器——$("body div") 获取body下所有的div元素对象 (父子关系)
		   $("#d1 .check") 	获取id为d1的标签对象下所有class属性为check的标签对象(父子关系)
		   $("body>div")	获取body下第一个div元素对象(父子关系)
		    $("body+div")	获取body同级的下一个div元素对象(兄弟关系)
		   $("#d1~div")	获取id为d1的标签的同级所有的div元素对象(兄弟关系)
过滤选择器——$("body div:first") 获取body下第一个div元素对象(父子关系)
			$("body div:last") 获取body下最后一个div元素对象(父子关系)
			$("body div:odd")	获取body下div标签索引为奇数的对象
			$("body div:even")	获取body下div标签索引为偶数的对象
			$("body div:eq(index)")	获取body下div标签索引为index的对象
			$("input: not(:checked)")获取所有未选中的input元素 
			$("input:gt(index)")  获取索引号大于给定索引值的元素,索引号从0开始
			:lt(index)         获取索引号小于给定索引值的元素
			:header         获取所有的标题元素  h1 h2 h3 h4 h5 h6
			:empty          获取所有不包含子元素或者文本的空元素
			:parent          获取含有子元素或者文本的元素
			$("select option:selected")获取下拉列表中所有选中的元素
			$("ul li:first-child")获取ul下li标签的第一个子标签  
			:only-child      获取所有父元素下唯一的一个元素
属性选择器——$("div[id]") 获取有id属性名的div标签对象
		   $("div[自定义属性名='自定义属性值']") 获取有自定义属性的div标签对象
表单选择器——$(":text")      获取所有的单行文本框对象
		   $(":password")		获取所有的密码框元素对象
		   :radio        获取所有的单选按钮
		   :checkbox       获取所有的复选框
		   :image          获取所有的图像按钮
		   :file            获取所有的文件上传框


$("#id").next() 当前对象的下一个元素对象
$("#id").nextAll()	当前对象下面所有元素对象
$("#id").prev()	当前对象的上一个元素对象
$("#id").prevAll()	当前对象上面所有元素对象
$("#id").parent()	当前对象的父级元素对象
$("#id").parentsAll()	当前对象的所有父级元素对象	
$("#id").children();  当前对象的所有子元素对象
$("#id").siblings();  当前对象的所有兄弟元素对象

jQuery常用方法

获取jQuery对象无非是同于标签的设置,标签属性的设置,标签文本的设置,事件的绑定
方法
jQuery对象.trim(str) 去除字符串的前后空格

文本设置相关
jQuery对象.html()	获取当前对象的内容(代码及文本)——文本设置
jQuery对象.text()	获取当前对象的内容(文本)——文本设置

属性设置相关
jQuery对象.val()	获取当前对象的value属性的值(val方法只能获取表单元素的值)
jQuery对象.val(str)	设置当前对象的value属性的值
jQuery对象.addClass("cls")	为当前对象添加一个class属性值
jQuery对象.removeClass("cls")为当前对象删除一个class属性值
jQuery对象.toggleClass("cls") 当前如果有这个class属性值就删除;没有就添加
jQuery对象.attr("属性名")	获取当前对象的属性值(attr方法可以获取任意元素的值)
jQuery对象.attr("属性名","属性值")	设置当前对象的属性
jQuery对象.removeAttr("属性名")	删除当前对象的属性
jQuery对象.prop()  获取属性,用于checkbox和radio
jQuery对象.removeProp()  移除属性,用于checkbox和radio

css样式相关
$("").css("样式名","样式值");
例如:$("p").css("color","red");

标签对象设置相关
被选元素对象.append()在被选元素的结尾(元素内部)插入指定内容
new对象.appendTo(被选元素) 在被选元素的结尾(元素内部)插入指定内容
jQuery对象.prepend()在被选元素的开头(元素内部)插入指定内容
jQuery对象.after(new元素) 在当前元素下方插入新元素(兄弟标签)
jQuery对象.before()当前元素上方插入新元素(兄弟标签)
jQuery对象.remove()  从dom中删除中所有匹配的元素
jQuery对象.empty()  从被选元素移除所有内容,包括所有文本和子节点,但是自身标签任然存在于dom中

标签状态相关
jQuery对象.hide() 隐藏该元素
jQuery对象.show() 显示该元素
jQuery对象.toggle() 方法切换元素的可见状态;元素可见,就隐藏这些元素;元素隐藏,就显示这些元素

jQuery对象.replaceWith()	用指定的 HTML 内容或元素替换当前元素
jQuery对象.replaceAll()	用指定的 HTML 内容或元素替换当前元素	

attr所指的属性是HTML标签属性,prop所指的是DOM对象属性
addClass()与attr()相比,attr()是对整个属性进行操作,addClass()是追加

事件:
bind() 绑定事件
click() 单击事件
change()	内容改变事件
mouseout() 鼠标离开事件
mouseover()鼠标经过事件
focus()鼠标焦点获取事件
blur()鼠标焦点失去事件
...
...
示例:
$("p").focus(function(){...});
$("p").blur(function(){...});

事件设置:
bind("事件名称",函数)
bind("click", function(){...})绑定单击事件
unbind("click", function(){...}) 移除单击事件
on("click", function(){...})	添加一个或多个事件处理程序
off("click", function(){...})	移除通过 on() 方法添加的事件

ready与load事件

window.onload :必须等到页面内包括图片的所有元素加载完毕后才能执行,不能同时编写多个
				如果有多个 window.onload 方法,只会执行一个
$(document).ready():DOM 结构绘制完毕后就执行,不必等到加载完毕
					可以同时编写多个,并且都可以得到执行
DOM文档加载的步骤:	
(1) 解析HTML结构。
(2) 加载外部脚本和样式表文件。
(3) 解析并执行脚本代码。
(4) 构造HTML DOM模型。//ready
(5) 加载图片等外部文件。
(6) 页面加载完毕。//load
ready事件简写:
	$(function(){})

jQuery的遍历

<script type="text/javascript" src="jquery-1.8.3.js" ></script>
<script type="text/javascript">
	li = [10, 20, 30, 40]
	$.each(li, function(i, el){
	  console.log(i, el);  //index是索引,el是每次循环的具体元素。
	})
</script>

jQuery的二级联动——标签设置

<script type="text/javascript">
	//二维数组存储省份与城市 
	var c = new Array(4);
	c[0] = new Array("武汉市","黄冈市","襄阳市","荆州市");
	c[1] = new Array("长沙市","郴州市","株洲市","岳阳市");
	c[2] = new Array("石家庄市","邯郸市","廊坊市","保定市");
	c[3] = new Array("郑州市","洛阳市","开封市","安阳市");
	
	
	 $(function(){//DOM加载完成后执行这个ready事件
		 $("#sel1").change(function(){//给一级列表添加一个change事件
				var value = $(this).val();//获取一级列表中选中项的value属性值
				var $sel2 = $("#sel2");//获取第二个列表的jQuery对象
				$sel2[0].options.length=1;  //转为element对象后设置列表长度为1(清空二级列表内容)
				$.each(c,function(i,n){//jQuery的遍历,i为元素下标,n为元素
					if(value == i){//一级标签的value属性值与数组下标一致,当前数组的值就是二级列表的内容
						$.each(n,function(j,m){//j为元素下标,m为元素	
							//追加标签
							$sel2.append("<option>" + m + "</option>")	 							 
						});
					}
				});
			});
		}
	); 
	
</script>
</head>
<body>
籍贯		
			<select id="sel1">
			<!-- change(this.value)是一个内容改变时就会被调用的事件
			this.value是当前下拉框的value值(0/1/2/3) -->
				<option selected="selected">--请选择--</option>
				<option value="0">湖北</option>
				<option value="1">湖南</option>
				<option value="2">河北</option>
				<option value="3">河南</option>
			</select>
			<select id="sel2">
				<option >--请选择--</option> 
			</select>
</body>

在这里插入图片描述

图片移入焦点和移出焦点——标签属性设置

<style type="text/css">
	.img{
		width:270px;
		heigth:270px;
		border-color: blue;
		border-style: solid;
	}
	.img2{
		border-color: red;
		border-style: solid;
	}
</style>
<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript">
	$(function(){//DOM加载完成后执行的函数
		$("#img").bind({//为img标签绑定多个事件
			mouseover:function(){//鼠标焦点移入事件
				//将图片1变为图片2,且改变样式
				$(this).addClass("img");//添加class属性值
				$(this).attr("src","imgs/5.jpg");//修改src属性值
				$(this).removeClass("img2");//移除class属性值
				
			},
			mouseout:function(){//鼠标焦点移出事件
				//将图片2变为图片1,且还原样式
				$(this).attr("src","imgs/3.jpg");
				$(this).removeClass("img");
				$(this).addClass("img2");
		    }
		    	
		});
	})


</script>
</head>
<body>
<img id="img" class="img2" src="imgs/3.jpg" width="150" heigth="150" >

</body>

数据的显示与隐藏——标签状态设置

<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript">
	 $(function(){//DOM加载完成后执行
		 $("#div").hide();//隐藏当前元素
		 $("#but").click(function(){//为按钮绑定一个单击事件
			$("#div").toggle();//改变元素的隐藏/显示状态
		}) 
		
	}); 
	
</script>
</head>
<body >
		<input type="button" id="but" value="更多">
		<div id="div">
			西游记2<br>
			猛虫过江<br>
			湮灭<br>
			鲨海<br>
			<div id="div">
			黑豹<br>
			妇联3<br>
			奥创纪元<br>
			创世纪<br>
			黑客帝国<br>
		</div>
</body>

表格的隔行换色——css样式动态显示

<style type="text/css">
.ou		{ background:#FFF38F;}  /* 偶数行样式*/
.ji		{ background:#FFFFEE;}  /* 奇数行样式*/
.over	{ background:red;}	/* 移入焦点样式*/
</style>
<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript">
	$(function(){
		//设置初始的表格样式
		$("tbody tr:even").addClass("ou");//为偶数的行添加一个class属性,值为ou
		$("tbody tr:odd").addClass("ji");//为偶数的行添加一个class属性,值为ou
		
		$("tbody tr").mouseover(function(){
			var cls = $(this).attr("class");
			$(this).removeClass(cls);
			$(this).addClass("over");	
		})
		$("tbody tr").mouseout(function(){
			$(this).removeClass("over");
			$("tbody tr:even").addClass("ou");
			$("tbody tr:odd").addClass("ji");
		})		
		
	});
</script>
</head>
<body >
	<table border="1px" table" width="500px" height="50px" align="center">
		<thead>
			<tr>
				<th>编号</th>
				<th>姓名</th>
				<th>年龄</th>
			</tr>
		</thead>
		<tbody>
			<tr >
				<td>1</td>
				<td>张三</td>
				<td>22</td>
			</tr>
			<tr>
				<td>2</td>
				<td>李四</td>
				<td>23</td>
			</tr>
			<tr  >
				<td>3</td>
				<td>王五</td>
				<td>24</td>
			</tr>
			<tr >
				<td>4</td>
				<td>赵六</td>
				<td>25</td>
			</tr>
		</tbody>
	</table>
</body>

隔行换色

在这里插入图片描述

表格隔行换色,移入焦点后显示当前行背景色显示红色,移出焦点恢复原理的颜色

标签之间的数据迁移——标签数据的移动

<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript">
	$(function(){
		/*1.选中单击去右边*/
		$("#selectOne").click(function(){
			$("#left option:selected").appendTo($("#selectOneRight"));
		});
		
		/*2.单击全部去右边*/
		$("#selectAllToRight").click(function(){
			$("#left option").appendTo($("#selectOneRight"));
		});
		
		/*3.选中双击去右边*/
		$("#left option").dblclick(function(){
			$("#left option:selected").appendTo($("#selectOneRight"));
		});
	});
</script>
	</head>
	<body>
		<table border="1" width="600" align="center">
			<tr>
				<td>
					<span style="float: left;">
						<font color="green" face="宋体">商品列表</font><br/>
						<select multiple="multiple" style="width: 100px;height: 200px;" id="left">
							<option>魅族</option>
							<option>爱疯</option>
							<option>华为</option>
							<option>小米5</option>
							<option>外星人</option>
						</select>
						<p><a href="#" style="padding-left: 20px;" id="selectOne">&gt;&gt;</a></p>
						<p><a href="#" style="padding-left: 20px;" id="selectAllToRight">&gt;&gt;&gt;</a></p>
					</span>
					<span style="float: right;">
						<font color="red" face="宋体">购物车</font><br/>
						<select multiple="multiple" style="width: 100px;height: 200px;" id="selectOneRight">
							<option>红米Note3</option>
							<option>三星</option>
						</select>
						<p><a href="#" >&lt;&lt;</a></p>
						<p><a href="#" >&lt;&lt;&lt;</a></p>
					</span>
				</td>
			</tr>
		</table>
	</body>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值