jQuery框架介绍-简化js

jQuery简介

1、什么是jQuery(了解)

jQuery是JS的框架

jQuery是一个轻量的、免费开源的JS函数库

轻量的: 对框架的依赖程度越低, 耦合性越低, 这个框架越轻, 反之, 对框架的依赖程度越高, 耦合性越高, 这个框架就越重。

能够极大的简化JS代码。

jQuery核心思想 “写得更少, 但是做的更多”

2、 jQuery的优势(了解)

  1. 能够极大的简化JS代码
  2. 能够像css选择器一样方便获取元素
//获取id为div1的元素
document.getElementById("div1");
$("#div1")
//获取class值为one的元素
$(".one")
  1. 能够通过修改css属性控制页面的效果
$("div").css("border", "2px solid red");
  1. 能够兼容常用的浏览器
    谷歌, 火狐, 欧朋, 苹果

3、引入jQuery

由于jQuery的库文件就是一个普通的JS文件

所以引入jQuery就是引入一个JS文件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" id="i1" value="" />
		<input type="button" id="b1" value="按钮1" />
		<!-- 引入jQuery文件 -->
		<script type="text/javascript" src="../js/jquery-1.4.2.js"></script>
		<script type="text/javascript">
			// js中的页面加载完成事件
			//onload = function(){}
			// jQuery中的页面加载完成事件
			$(function(){
				// 通过id选择器得到按钮,给按钮添加事件
				$("#b1").click(function(){
					//js中
					//alert(i1.value);
					//jQuery中获取文本框的内容
					alert($("#i1").val());
				});
			});
		</script>
	</body>
</html>
jQuery中的页面加载完成事件:$(function(){});
jQuery中的动态绑定事件:$("#b1").click(function(){});
jQuery中获取文本框的内容:alert($("#i1").val());

4、JavaScript与jQuery的互相转换

把js对象转换为jq对象:
var jq = $(js);

把jq对象转换为js对象(jq对象的本质是一个js的数组):
var js = jq[0];

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js与jq转换</title>
	</head>
	<body>
		<input type="text" id="i1" />
		<input type="button" id="b1" value="js转jq" />
		<input type="button" id="b2" value="jq转js" />

		<!-- 引入jQuery文件 -->
		<script type="text/javascript" src="../js/jquery-1.4.2.js"></script>
		<script type="text/javascript">
			//给按钮1添加事件
			$("#b1").click(function() {
				//得到js对象
				var js = document.getElementById("i1");
				//把js对象转换为jq对象
				var jq = $(js);
				alert(jq.val());

			});
			//给按钮2添加事件
			$("#b2").click(function() {
				//得到jq对象
				var jq = $("#i1");
				//把jq对象转换为js对象
				/* jq对象的本质是一个js的数组 */
				var js = jq[0];
				alert(js.value);
			});
		</script>
	</body>
</html>

5、jQuery的选择器

基本选择器

  1. 元素名(标签名)选择器
    $(“div”) – 匹配所有的div元素
    $(“p”) – 匹配所有的p元素
  2. 类选择器
    $(".mini") – 匹配所有class值为mini的元素
    $(“div.mini”) – 匹配所有class值为mini的div元素
  3. ID选择器
    $("#one") – 匹配id为one的元素
  4. 分组选择器
    $(“div,p,.mini,#one”)
    匹配所有的div元素以及所有的p元素, 以及所有class值为mini的元素, 和id为one的元素
  5. 任意元素选择器
    $("*") 匹配任意元素

层级选择器

  1. 后代选择器
    $(“div span”) – 匹配div内部的所有span元素
  2. 子元素选择器
    $(“div>span”) – 匹配div内部的所有span子元素
  3. 相邻兄弟选择器
    $("#two+span") – 匹配id为two的元素后面紧邻的span兄弟元素
  4. $("#two~div")
    匹配id为two的元素后面所有的div兄弟元素
层级相关方法

$("#two").siblings(“div”)
匹配id为two的元素前后所有的div兄弟元素

$("#two").prev(“div”)
匹配id为two的元素前面的一个div兄弟元素

$("#two").prevAll(“div”)
匹配id为two的元素前面所有的div兄弟元素

$("#two").next(“div”)
匹配id为two的元素后面的一个div兄弟元素

$("#two").nextAll(“div”)
匹配id为two的元素后面所有的div兄弟元素

$("#two").parent()
匹配id为two的元素的父元素

$("#two").children(“div”)
匹配id为two的元素的子元素

过滤选择器

  1. :first
    $(“div:first”) – 匹配所有div中的第一个div

  2. :last

    $(“div:last”) – 匹配所有div中的最后一个div

  3. :eq(n)
    $(“div:eq(n)”) – 匹配所有div中第n+1个div,即下标等于n的元素
    $(“div:eq(0)”) – 匹配所有div中的第一个div
    $(“div:eq(-1)”) – 匹配所有div中的最后一个div
    $(“div”).eq(0) – 匹配所有div中的第一个div

  4. :not()
    $(“div:not(.abc)”) 匹配所有div中class值不等于abc的元素

  5. :even
    $(“div:even”) 匹配所有div中下标为偶数的元素

  6. odd
    $(“div:odd”) 匹配所有div中下标为奇数的元素

  7. :lt(n)
    $(“div:lt(n)”) 匹配所有div中下标小于n的元素

  8. :gt(n)
    $(“div:gt(n)”) 匹配所有div中下标大于n的元素

内容选择器

  1. $(“div:has§”) 匹配包含p子元素的div
  2. $(“div:empty”) 匹配空的div
  3. $(“div:parent”) 匹配非空的div
  4. $(“div:contains(‘xxx’)”) 匹配包含xxx文本的div

可见选择器

  1. $(“div:hidden”) 匹配所有不可见(隐藏)的div
  2. $(“div:visible”) 匹配所有可见div
隐藏显示相关方法
  1. $("#abc").show() 让元素显示
  2. $("#abc").hide() 让元素隐藏
  3. $("#abc").toggle 让元素显示隐藏状态反转,显示的隐藏,隐藏的显示

属性选择器

  1. $(“div[id]”) 匹配包含id属性的div,匹配包含某个属性的某个标签
  2. $(“div[id=‘xxx’]”) 匹配id属性为xxx的div
  3. $(“div[id!=‘xxx’]”) 匹配id属性不为xxx的div

子元素选择器

  1. $(“div:first-child”) 匹配是子元素的div,并且第一个
  2. $(“div:last-child”) 匹配是子元素的div,并且是最后一个
  3. $(“div:nth-child(n)”) 匹配是子元素的div,并且是第n个(注意n从1开始,不是下标)

表单选择器

  1. $(":input") 匹配表单中所有的控件
  2. $(":password") 匹配表单中所有的密码框
  3. $(":radio") 匹配表单中所有的单选
  4. $(":checkbox") 匹配表单中所有的多选
  5. $(":checked") 匹配表单中所有选中的单选、多选、下拉选
  6. $(“input:checked”) 匹配表单中所有选中的单选和多选
  7. $(":selected") 匹配表单中所有选中的下拉选

6、jQuery的循环遍历

通过4,我们知道:jq对象的本质是一个js的数组

所以jQuery提供了遍历jq对象内所以元素的方式:each

切记:变脸jq对象,遍历出来的是其本质数组中存放的js对象

其中,遍历时,用this代表遍历数组中的当前遍历到的js对象

		//弹出所有 :checked 元素的value值" id="b4"
		$("#b4").click(function() {
// 			var arr = $(":checked");
// 			for(let i=0;i<arr.length;i++){
// 				alert(arr[i].value);
// 			}
			//jQuery提供了遍历jq数组的方法
			//上述可以缩写为
			$(":checked").each(function(){
				//this代表遍历数组中的当前遍历到的js对象
				alert(this.value)
			});
		});

7、通过jQuery增加元素对象

创建元素对象

js中: var d = document.createElement(“div”);

jq中: var d = $("<div id=‘xxx’>abc</div>");

添加到某个元素中

$(“父元素”).append(d); 添加到父元素的最后面

$(“父元素”).prepend(d); 添加到父元素的最前面

插入

$("#abc").before(d); 把d元素插入到id为abc的元素的前面

$("#abc").after(d); 把d元素插入到id为abc的元素的后面

8、通过jQuery删除标签

js中: document.body.removeChild(d); js中我们需要通过父元素删除该子元素

jq中: $("#abc").remove(); 删除id为abc的元素

9、通过jQuery修改标签

  1. 修改标签的text 等效innerText
    标签对象.text(); //获取
    标签对象.text(“xxx”); //修改
  2. 修改标签的html 等效innerHTML
    标签对象.html(); //获取
    标签对象.html(“

    xxx

    ”); //修改
  3. 修改标签的css样式
    标签对象.css(“color”); //获取
    标签对象.css(“color”,“red”) //修改
    标签对象.css({“width”:“200px”,“height”:“100px”});批量赋值
  4. 修改标签的属性 attribute属性
    标签对象.attr(“class”); //获取class的值
    标签对象.attr(“class”,“c1”); //修改标签class值为c1

练习

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" />
		<input type="button" value="添加最后面" />
		<input type="button" value="添加最前面" />
		<input type="button" value="插入上海前面" />
		<input type="button" value="插入上海后面" />
		<input type="button" value="删除上海" />
		<ul>
			<li>北京</li>
			<li>上海</li>
			<li>广州</li>
		</ul>
		
		<!-- 引入jQuery文件 -->
		<script type="text/javascript" src="../js/jquery-1.4.2.js"></script>
		<script type="text/javascript">
			$("input:eq(1)").click(function(){
				//创建一个li对象
				var li = $("<li></li>");
				//取出文本框内容
				var t = $("input:eq(0)").val();
				//将取出的内容放入li中
				li.text(t);
				//将li添加到ul中
				$("ul").append(li);
			});
			$("input[value='添加最前面']").click(function(){
				var li = $("<li></li>");
				li.text($("input:first").val());
				$("ul").prepend(li);
			});
			$("input:nth-child(4)").click(function(){
				var li = $("<li></li>");
				li.text($("input:first").val());
				$("li:contains('上海')").before(li);
			});
			$("input:eq(4)").click(function(){
				var li = $("<li></li>");
				li.text($("input:first").val());
				$("li:contains('上海')").after(li);
			});
			$("input:eq(5)").click(function(){
				var li = $("<li></li>");
				li.text($("input:first").val());
				$("li:contains('上海')").remove();
			});
		</script>
	</body>
</html>

用jQuery完成QQ好友分组

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>jq仿QQ好友列表</title>
	</head>
	<body>
		<ul>
			<li>
				亲戚
				<ul>
					<li>关三爷</li>
					<li>李大爷</li>
					<li>李二爷</li>
				</ul>
			</li>
			<li>
				同事
				<ul>
					<li>马云</li>
					<li>马化腾</li>
					<li>王健林</li>
				</ul>
			</li>
			<li>
				女朋友们
				<ul>
					<li>星星</li>
					<li>白晶晶</li>
					<li>亮晶晶</li>
				</ul>
			</li>
		</ul>
		
		<!-- 引入jQuery文件 -->
		<script type="text/javascript" src="../js/jquery-1.4.2.js"></script>
		<script type="text/javascript">
			//拿到2层ul,让它们全部隐藏
			$("li>ul").hide();
			//给第一层li绑定点击事件
			$("body>ul>li").click(function(){
				//this代表触发事件的元素,是js对象
				$(this).children().toggle();
				//把点击的这个之外的隐藏
				//通过silblings()得到选中的兄弟元素
				$(this).siblings().children().hide();
			});
		</script>
	</body>
</html>

10、获取事件源

事件源:触发事件的标签
在动态绑定的事件方法中,this就是事件源

**注意:**只有动态绑定的事件方法中this代表的才是事件源(触发事件的标签)

获取事件源的方式:
var obj = event.target||event.srcElement;

11、事件模拟

格式: 元素对象.trigger(“事件名称”);

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="button" value="点我试试" onclick="alert('试试就试试')" />
        
		<script type="text/javascript" src="../js/jquery-1.4.2.js"></script>
		<script type="text/javascript">
			//只执行一次的定时器
			setTimeout(function(){
				//事件模拟
				$("input").trigger("click");
			},3000);
		</script>
	</body>
</html>

12、hover方法

将鼠标移入移出合并到一个方法中

$(“div”).hover(function(){//当鼠标移入执行
$(this).css(“color”,“red”);
},function(){//当鼠标移出执行
$(this).css(“color”,“green”);
});

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div>hover方法测试</div>
		<div>hover方法测试</div>
		<div>hover方法测试</div>
		
		<script type="text/javascript" src="../js/jquery-1.4.2.js"></script>
		<script type="text/javascript">
			//hover中定义传入两个方法,前面的是鼠标移入时执行,后面的是鼠标移出时执行
			$("div").hover(function(){
				//方法一:鼠标移入时
				$(this).css("color","red");
			},function(){
				//方法二:鼠标移出时
				$(this).css("color","green");
			});
		</script>
	</body>
</html>

13、动画相关方法

隐藏 .hide(时间)

显示 .show(时间)

淡出 .fadeOut(时间)

淡入 .fadeIn()

上滑 .slideUp()

下滑 .slideDown()

自定义 .animate({“left”,“1000px”},时间);

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			img{
				width: 600px;
				height: 400px;
				position: relative; /* 相对定位 */
			}
		</style>
	</head>
	<body>
		<input type="button" value="隐藏" />
		<input type="button" value="显示" />
		<input type="button" value="淡入" />
		<input type="button" value="淡出" />
		<input type="button" value="上滑" />
		<input type="button" value="下滑" />
		<input type="button" value="自定义" />
		<hr><!-- 水平分割线 -->
		<img src="../imgs/2.gif" />
		
		<script type="text/javascript" src="../js/jquery-1.4.2.js"></script>
		<script type="text/javascript">
			//隐藏动画(第一个参数隐藏的过程时间,第二个参数隐藏完成时执行的方法)
			$("input:eq(0)").click(function(){
				$("img").hide(1000,function(){
					$("img").show(3000);
				});
			});
			//显示动画(第一个参数隐藏的过程时间,第二个参数隐藏完成时执行的方法)
			$("input:eq(1)").click(function(){
				$("img").show(1000);
			});
			//淡入
			$("input:eq(2)").click(function(){
				$("img").fadeIn(1000);
			});
			//淡出
			$("input:eq(3)").click(function(){
				$("img").fadeOut(1000);
			});
			//上滑
			$("input:eq(4)").click(function(){
				$("img").slideUp(1000);
			});
			//下滑
			$("input:eq(5)").click(function(){
				$("img").slideDown(1000);
			});
			//自定义
			$("input:eq(6)").click(function(){
				$("img").animate({"left":"200px"},500)
				.animate({"top":"200px"},500)
				.animate({"left":"0px"},500)
				.animate({"top":"0px"},500)
				.animate({"width":"800px","height":"500px"},1000)
				.animate({"width":"600px","height":"400px"},1000);
			});
		</script>
	</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值