jquery

js的框架,底层由js语言组成,将js进行了封装,让功能更强大,语法变的更简洁。本质就是一个js文件。

jquery框架是一个优秀的javascript的轻量级框架之一,兼容css3和各大浏览器,提供了dom、events、animate(动画)、ajax等简易的操作。并且jquery的插件非常丰富,大多数功能都有相应的插件解决方案。

jquery的宗旨是 write less do more。

jquery最主要的作用是简化js的dom树的操作。

版本
1.xxx.js 最广泛
2.xxx.js
3.xxx.js

jquery基本使用

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>jquery demo</title>
		
		<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
		
		<script type="text/javascript">
		
			// jquery引入 与 页面加载
			// js 页面加载
			// js 只会输出 页面加载2
			window.onload = function(){
				console.log("js页面加载1")
			}
			
			window.onload = function(){
				console.log("js页面加载2")
			}
			
			// jquery 页面加载
			// jquery 两个都会输出
			$(function(){
				console.log("jquery页面加载1")
			})
			
			$(function(){
				console.log("jquery页面加载2")
			})
			
			
			
			$(function(){
				// jquery获取标签
				
				// jquery语法获取的对象是jquery对象
				// 起名建议前面带 $,代表jquery对象
				
				// js对象与jquery对象不能互用属性和方法
				// 获取标签
				var myinput = document.getElementById("myinput")
				var mydiv = document.getElementById("mydiv")
				
				var $myinput = $("#myinput")
				var $mydiv = $("#mydiv")
				
				// js与jquery对象互转
				console.log($(myinput).val())
				console.log($(mydiv).html())
				// jquery对象本质是一个js数组,数组内部每个元素是js对象
				console.log($myinput[0].value)
				console.log($mydiv[0].innerHTML)
				

				// 获取属性
				console.log(myinput.value)
				console.log(mydiv.innerHTML)
				
				console.log($myinput.val())
				console.log($mydiv.html())
				
				
				// 事件绑定
				mydiv.onclick=function(){
					alert("js mydiv")
				}
				
				$mydiv.click(function(){
					alert("jquery mydiv")
				})
				
				
				
			})
			
			
		</script>
	</head>
	<body>
		<input id="myinput" value="myinputValue"></input>
		<div id="mydiv">log</div>
	</body>
	
</html>

jQuery选择器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>jquery demo</title>
		
		<script type="text/javascript" src="js/jquery-1.12.4.js"></script>
		
		
	</head>
	<body>
		<input id="myinput" class="myinputClass" value="myinputValue"></input>
		<button id="zisun">爷爷的所有后辈变红</button>
		<button id="erzi">只有爷爷的儿子变红</button>
		<div id="mydiv">爷爷
			<div>儿子
				<div>孙子</div>
			</div>
		</div>
	</body>
	
	<div id="testCss">
		啦啦啦
	</div>
	
	
	<script type="text/javascript">
	
		// 选择器 就是jquery找标签的方式
		// 类似 js document.getElementById() ByName() 等等
		
		// 1.基本选择器
		// id选择器		$("#id")
		// class选择器	$(".class的属性值")
		// 标签选择器	$("标签名")
		
		console.log($("#mydiv").html())
		console.log($(".myinputClass").val())
		console.log($("div").html())
		
		
		// 修改样式方法
		// jquery对象.css("样式名")	一个参数代表获取,两个参数代表设置
		console.log($("div").css("color","blue"))
		// 只设置一种属性值
		$("#testCss").css("color","orange");
		// 设置多属性值
		$("#testCss").css({"color":"orange","text-align":"center"});
		
		
		
		//2.层级选择器
		// $("a b") a元素内部的所有b元素,儿子,孙子都包含
		// $("a > b") a元素内部的所有b子元素,只有儿子
		$("#zisun").click(function(){
			$("#mydiv div").css("color","red")
		})
		
		
		$("#erzi").click(function(){
			$("#mydiv > div").css("color","red")
		})
		
		
		
		
		// 3.属性选择器
		// $("A[属性名]")
		// $("A[属性名=值]")
		// $("A[属性名=值][属性名=值]")


		// 4.表单属性选择器(下面是常用的几个)
		// :enabled		获得可用元素
		// :disabled	获得不可用元素
		// :checked		获得单选/复选框选中的元素
		// :selected	获得下拉框中选中的元素
		
	</script>
</html>



基本过滤选择器

在这里插入图片描述

jquery dom 常用方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>jquery demo</title>
		
		<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
		
		
	</head>
	<body>
		
	</body>
	
	
	<script type="text/javascript">
	
		// js dom对象常用获取属性
		
		// js对象.value		获取value属性的值,一般用于表单标签
		// js对象.innerHTML	获取标签体的内容
		// js对象.innerText	获取标签体文本
		
		
		// js有关获取属性的方法
		// js对象.getAttribute(属性名)	获取指定属性的属性值
		// js对象.setAttribute(属性名)
		// js对象.removeAttribute(属性名)
		
		
		
		
		// jquery dom对象常用方法
		
		// 下面三个方法如果填参数的话,就是设置
		// val()	获取value属性的值,一般用于表单标签
		// html()	获取标签体的内容
		// text()	获取标签体文本
		
		
		// jquery有关获取属性的方法
		// attr()	一个参数是获取,两个参数是设置
		// removeAttr()
		
		// 对于 selected checked 这种选择的操作,获取选中的值,建议使用prop()
		// prop() 返回的是boolean
		// attr()	被选中就是checked,没被选中就是undefined
		
		
		// jquery有关样式的方法
		// css
		.one{
			
		}
		.two{
			
		}
		
		// jquery
		// 一个参数获取,两个参数设置
		// 标签.attr("class","one")
		// 标签.css()
		// <标签名 class="one">
		// 标签名.addClass("one")	添加类样式,指定类样式名字即可
		// removeClass("")	删除指定的类样式名
		// toggleClass("")	切换样式,如果没有类样式则添加,如果有类样式,则替换,这个是可以实现来回切换的
		$("#one").toggleClass("second")		// 设置点击事件,可以在原有样式和second样式之间来回切换
		
		
		// jquery创建/插入对象
		// $("<A></A>")		创建A标签		js 	createElement("A")
		// append(ele)		添加成最后一个子元素,父子关系		city.append("<option value='-请选择-'>-请选择-</option>");
		// prepend(ele)		添加成第一个子元素,父子关系
		// before(ele)		添加到当前元素的前面,兄弟关系
		// after(ele)		添加到当前元素的后面,兄弟关系
		
		// remove()		删除指定元素,jquery对象.remove()
		// empty()		清空指定元素的所有子元素



// parent()返回该标签的直接父元素
// 获取到的就是<li>,直接父节点
$("span").parent();

<body class="ancestors">body (曾曾祖父节点)
	<div style="width:500px;">div (曾祖父节点)
		<ul>ul (祖父节点)  
			<li>li (直接父节点)
				<span>span</span>
			</li>
		</ul>   
	</div>
</body>



// find() 方法返回被选元素的后代元素。
// 后代是子、孙、曾孙,依此类推。

// 获取到该对象的爷爷,寻找其后代class是sku_attr_value的,
// 移除class的checked属性
$(this).parent().parent().find(".sku_attr_value").removeClass("checked");
		
		
		
	</script>
</html>

JS中attr和prop区别

  1. attr和prop区别

attr 是从页面搜索获得元素值,所以页面必须明确定义元素(例如checked的默认属性是不选中,必须写出来才行)才能获取值,相对来说较慢。

prop是从属性对象中取值,属性对象中有多少属性,就能获取多少值,不需要在页面中显示定义。

  1. attr和prop怎么选择?

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。快速,准确。

对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

  1. 例子
<input id="chke1" type="checkbox" />记住密码
<input id="chke2" type="checkbox" checked="checked" />记住密码

像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。

$("#chke1").prop("checked");// false
$("#chke2").prop("checked");// true
 
$("#chke1").attr("checked"); //undefined
$("#chke2").attr("checked"); //"checked"

jquery动画效果

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>动画效果</title>

		<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
	</head>
	<body>
		<button id="yc">隐藏div</button>
		<button id="xs">显示div</button>
		<button id="qh">切换div</button>
		<br />
		<br />
		<div id="divDemo" style="color: red;height: 80px;width: 80px;background-color: red;"></div>
	</body>

	<script type="text/javascript">
		// 动画效果
		// speed: 速度 毫秒值时间
		// 还有三种预定速度之一的字符串("slow","normal", or "fast")

		// easing:(Optional) 用来指定切换效果,
		// 默认是"swing",可用参数"linear",变速运动        匀速运动 

		// 第三个参数 是一个函数,代表该动画完成时,要执行的代码


		//基本api
		// 基本
		// show([s,[e],[fn]])     显示
		// 
		// hide([s,[e],[fn]])     隐藏
		// toggle([s],[e],[fn])   切换
		// 滑动
		// slideDown([s],[e],[fn]) 	往下滑
		// slideUp([s,[e],[fn]]) 	往上滑
		// slideToggle([s],[e],[fn]) 切换
		// 淡入淡出
		// fadeIn([s],[e],[fn]) 	一点点出现
		// fadeOut([s],[e],[fn]) 	一点点消失
		// fadeToggle([s,[e],[fn]]) 切换




		$("#yc").click(function() {
			$("#divDemo").hide("slow")
		})

		$("#xs").click(function() {
			$("#divDemo").show("fast")
		})

		$("#qh").click(function() {
			$("#divDemo").toggle("normal", "linear")
		})


		$(function() {

			// 定时任务
			setTimeout(function() {
				$("#divDemo").hide("slow")
			}, 5000)
		})


		// hover(over,out)  
		// 两个参数都代表函数,移入做的函数,移出做的函数
		$("#yc").hover(
			function() {
				$(this).css("color", "blue")
			},
			function() {
				$(this).css("color", "red")
			}
		)
	</script>
</html>

jquery事件

jquery点击事件

// 触发页面内所有段落的点击事件
// 将页面内所有段落点击后隐藏
$("p").click( function () { $(this).hide(); });

$("p").on("click", function(){
alert( $(this).text() );
});

jquery事件绑定

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>jquery事件绑定</title>

		<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
	</head>
	<body>

		<button id="btn">i am btn</button>
		<button id="btn2">i am on</button>
		<button id="cancel">cancel</button>
	</body>

	<script type="text/javascript">
		$("#btn").click(
			function() {
				console.log("基本事件绑定")
			}
		)
		
		$("#btn2").on("click",function(){
			console.log("on 事件绑定")
		})

	
		$("#cancel").click(
			function() {
				// 事件解绑
				// 不传递参数代表对所有事件解绑
				$("#btn").off("click")
			}
		)
	</script>
</html>

jQuery常用的四种遍历方式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>jquery常用的4种遍历方式</title>
		
		<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
	</head>
	<body>
		
		<ul id="city">
			<li>北京</li>
			<li>上海</li>
			<li>广州</li>
			<li>深圳</li>
		</ul>
	</body>
	
	<script type="text/javascript">
	
		// 1. 普通for循环
		// for(var i = 0;i < $("#city li").length;i++){
			
		// 	// console.log($("#city")[i].innerHTML)
		// 	console.log($($("#city li")[i]).html())
		// }
		
		
		
		// 2. each函数
		// $("#city li").each(
		
		// 	// index 元素的索引,ele 遍历的每个元素(js对象)
		// 	function(index,ele){
		// 		console.log("索引为:" + index)
		// 		console.log("元素值为:" + $(ele).text())
		// 	}
		// )
		
		
		// 3. 全局函数
		// $.each(
		// 	$("#city li"),function(index,ele){
		// 		console.log("索引为:" + index)
		// 		console.log("元素值为:" + $(ele).text())
		// 	}
		// )
		
		// 4. 3.0新特性	与java增强for循环类似
		for(ele of $("#city li")){
			console.log("元素值为:" + $(ele).text())
		}
		
		
		
	
	</script>
</html>


jquery插件

插件就是将jquery实现的常用操作进行封装,封装后的小框架就可以叫做插件,按照插件的语法去操作可以实现很多复杂的功能,而我们需要做的是学会该插件的使用语法即可。

jquery的插件机制很简单,就是利用jquery提供的jQuery.fn.extend()和jQuery.extend()方法,扩展jQuery的功能。

插件先不看了,等工作中具体用到再说吧

其他

demo

复选框全选 隔行换色 移入移出

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>jquery测试checkbox</title>
		<script src="js/jquery-1.12.4.js"></script>
		
		
		
	</head>
	<body>
		
		<table border="1px">
					<tr>
						<th width="40px"><input onclick="selectAll(this)" type="checkbox" class="itemCheckbox" id="firstCheckbox"
								value="value" /><label for=""></label></th>
						<th width="50px">id</th>
						<th width="90px">分类</th>
						<th width="150px">分类商品</th>
						<th width="90px">操作</th>
					</tr>
					<tr>
						<td align="center"><input type="checkbox" class="itemCheckbox" id="" value="" /><label for=""></label></td>
						<td>1</td>
						<td>手机数码</td>
						<td>手机数码类商品</td>
						<td align="center"><button>修改|删除</button></td>
					</tr>
					<tr>
						<td align="center"><input type="checkbox" class="itemCheckbox" id="" value="" /><label for=""></label></td>
						<td>2</td>
						<td>电脑办公</td>
						<td>电脑办公类商品</td>
						<td align="center"><button>修改|删除</button></td>
					</tr>
					<tr>
						<td align="center"><input type="checkbox" class="itemCheckbox" id="" value="" /><label for=""></label></td>
						<td>3</td>
						<td>鞋靴箱包</td>
						<td>鞋靴箱包类商品</td>
						<td align="center"><button>修改|删除</button></td>
					</tr>
				</table>
	</body>
	
	<script type="text/javascript">
		
		$(function(){
			// 隔行换色
			$("tr:not(:first):even").css("background-color","red");
			$("tr:not(:first):odd").css("background-color","yellow");
			
			var trInitColor;
			// 移入移出
			$("tr:not(:first)").hover(function(){
				// 记录移入之前的颜色,等移出后进行恢复
				trInitColor = $(this).css("background-color")
			    $(this).css("background-color","orange");
			},function(){
			    $(this).css("background-color",trInitColor);
			});
		})
		
		// 参数名写this会报不识别,写obj就可以,不明白为什么,暂时不去理它
		function selectAll(obj){
			// 点一下全选,再点一下全不选
			$(".itemCheckbox").prop("checked",$(obj).prop("checked"))
			
		}
		
	</script>
</html>

使用jquery找出值为3的input在input中的位置

<html>
<head>
	<title>测试jquery</title>
	<script type="text/javascript" src="jquery-3.3.1.min.js" ></script>
	
	<script type="text/javascript">
		$(function(){
		
		var $list = $("input[name=radioGroup]");
		
		for(var i=0;i<$list.length;i++)
		if($($list[i]).val() === '3'){
			console.log($list[i]);
			console.log("值为3的input在input中的位置是:" + i);
		}	
		})
	</script>
</head>
	<body>
		<input id="wonima" type="radio" name="radioGroup" />
		<input type="radio" name="radioGroup"/>
		<input type="radio" name="radioGroup"/>
		<input type="radio" name="radioGroup"/>
		<input type="radio" name="radioGroup" value=3 />
		<input type="radio" name="radioGroup"/>
	</body>
</html>

快速获取表单所有字段的值

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>jquery demo</title>
		
		<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
		
		
	</head>
	<body>
		
		<p id="results"><b>Results: </b> </p>
		<form>
		  <select name="single">
		    <option>Single</option>
		    <option>Single2</option>
		  </select>
		  <select name="multiple" multiple="multiple">
		    <option selected="selected">Multiple</option>
		    <option>Multiple2</option>
		    <option selected="selected">Multiple3</option>
		  </select><br/>
		  <input type="checkbox" name="check" value="check1"/> check1
		  <input type="checkbox" name="check" value="check2" checked="checked"/> check2
		  <input type="radio" name="radio" value="radio1" checked="checked"/> radio1
		  <input type="radio" name="radio" value="radio2"/> radio2
		</form>
		
	</body>
	
	
	<script type="text/javascript">
	
		// Results: single=Single&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio1
		$("#results").append( "<tt>" + $("form").serialize() + "</tt>" );
	</script>
</html>

为什么是我不会?为什么不是我不要?为什么不是你不可以?
直到现在,我才知道这整起事件很可以化约成这一幕:他硬插进来,而我为此道歉。

房思琪的初恋乐园
林奕含

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值