jQuery框架

初始jQuery

jQuery能做什么

  1. 通过强大的选择器功能,准确获取需要查询或操作的文档元素
  2. 修改页面外观,即使在页面呈现后,仍然能够改变文档的样式属性
  3. 修改文档内容,可以改变文本,插入或翻转图像,列表重新排序,甚至对HTML文档的整个结构都能重写或扩充
  4. 获取各类页面事件,及时响应用户的交互操作
  5. 通过内置方法,能够为页面添加淡入,擦除等各类动态效果
  6. 通过Ajax技术,无需刷新页面即可从服务器获取信息
  7. 简化常见的JavaScript任务

导入jQuery库

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
<script src="jquery-3.5.1"></script>
<style>
	.hightlight{
		background-color: #CCC;
		font-style:italic;
		font-weight:bold;
		margin:5px;
	}
	
</style>
<script>
$(document).ready(function(){
	$('div').addClass('hightlight');
})
</script>
</head>
<body>	
<h1>在线课程:jQuery基础</h1>
<div>讲师:朱枫</div>
<div>学校:just</div>
<div>部门:软件工程</div>
</body>
</html>

在这里插入图片描述
在jQuery代码中使用$(document).ready()时,位于其中的所有代码都会在DOM加载后立即执行、

jQuery程序调试

  1. 使用浏览器的开发者工具调试程序(F12)
  2. 使用console.log方法输出表达式或变量的值
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
<script src="jquery-3.5.1"></script>
<style>
	.hightlight{
		background-color: #CCC;
		font-style:italic;
		font-weight:bold;
		margin:5px;
	}
	
</style>
<script>
$(document).ready(function(){
	$('div').addClass('hightlight');
	console.log("Helloworld");
})
</script>
</head>
<body>	
<h1>在线课程:jQuery基础</h1>
<div>讲师:朱枫</div>
<div>学校:just</div>
<div>部门:软件工程</div>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
<script src="jquery-3.5.1"></script>

</style>
<script>
$(document).ready(function(){
	console.log("我是小彪彪");
})
</script>
</head>
<body>	
</body>
</html>

在这里插入图片描述
在这里插入图片描述
断点调试:
在这里插入图片描述
sources中,鼠标左击行号即可,然后可按下方进行单步调试
在这里插入图片描述
在这里插入图片描述
也可以进行watch添加进行变量查看
在这里插入图片描述

jQuery选择器

基本选择器

  1. 加载jQuery库后,就可使用$(selector)选择元素
选择器示例描述
$("*")选择所有HTML元素
$(".test")选择class属性为test的所有HTML元素
$("#test")选择id属性为test的HTML元素
$("div")选择所有div元素
$("div,span,p")选择所有的<div>,<span>,<p>元素
$("ul.list")选择class属性为list的所有<ul>元素

属性选择器

  1. 根据属性值选择HTML元素
选择器示例描述
$("p[id]")选择有id属性的所有<p>元素
$("input[value=0]")选择属性value为0的所有<input>元素
$("p[class*=Content]")选择class属性包含Content的所有的p元素,例如:<p class="leftContent">……</p><p class="rightContent">……</p>
$("img[src^='icons\\/']")选择属性src以icons/开头的所有<img>元素,\\用来对字符/进行转义
$("input[value!='text']")选择属性value不为text或没有属性value的所有<input>
$("p[id][class$=menu]")选择有id属性且class属性以menu结尾的所有<p>元素

内容选择器

  1. 根据内容选择HTML
选择器示例描述
$("div:contains('open')")选择包含文本 open的所有<div>元素
$("div:has(span)")选择包含<span>元素的所有<div>元素
$("div:empty")选择没有内容的所有 <div>元素
$("div:parent")选择包含内容的所有<div>元素

层次选择器

  1. 根据DOM层次结构选择HTML元素
选择器示例描述
$("div span")选择祖先为<div>的所有<span>元素,不要求父元素为 <div>
$("div.menu>span")选择所有<span>元素,其父元素为具有class=menu属性的<div>元素
$("label+input.textItem")选择所有这样的<input>元素,即紧跟<label>元素后,与<label>同辈,且class属性为textItem
$("#menu~div")选择所有这样的<div>元素,即位于id为menu的元素后面且与它同辈

表单选择器

  1. 根据状态选择表单元素
选择器示例描述
$("input:checked")选择当前处于checked状态 的所有<input>元素
$("option:checked")选择当前处于selected状态 的所有<option>元素
$(":focus")选择获得焦点的表单元素
$("input:enabled")选择处于启动状态的<input>元素
$("input:disabled")选择处于禁用状态的<input>元素

可视性选择器

  1. 根据可见状态选择元素
选择器示例描述
$("div:visible")选择可见的 <div>元素
$("div:hidden")选择隐藏的 <div>元素

筛选选择器

选择器示例描述
$("tr:even")选择索引为偶数的<tr>元素
$("tr:odd")选择索引为奇数的<tr>元素
$("div:first")选择第一个<div>元素
$("div:last")选择最后一个<div>元素
$(":header")选择标题元素
$("div:eq(5)")选择第六个<div>元素,索引从0开始
$("li:gt(1)")选择除前两个<li>元素外的其他<li>元素
$("li:lt(2)")选择前两个<li>元素
$(":animated")选择当前应用了动画效果的所有元素

注意:

li:lt(2)

这里并不是大写的i,而是小写的L,如果写成大写的i无效

选择器示例

创建页面

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	

<style>
	span{
		padding: 2px;
		border: 3px solid blue;
		color: white;
		background-color: blue;
		cursor: pointer;
	}
	
	.label{
		font-size: 24px;
		margin: 10px;
	}
</style>


</head>
<body>
	<span onclick="setEven()">Even</span>
	<span onclick="setOdd()">Odd</span>
	<span onclick="setFirst3()">First3</span>
	<p class="label">星球</p>
	<ul>
		<li>水星</li>
		<li>金星</li>
		<li>地球</li>
		<li>火星</li>
		<li>木星</li>
		<li>土星</li>
		<li>天王星</li>
		<li>海王星</li>
		<li>冥王星</li>
	</ul>
</body>
</html>

在这里插入图片描述

应用jQuery
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	

<style>
	span{
		padding: 2px;
		border: 3px solid blue;
		color: white;
		background-color: blue;
		cursor: pointer;
	}
	
	.label{
		font-size: 24px;
		margin: 10px;
	}
</style>


</head>
<body>
	<script src="jquery-3.5.1"></script>
	<span onclick="setEven()">Even</span>
	<span onclick="setOdd()">Odd</span>
	<span onclick="setFirst3()">First 3</span>
	<p class="label">星球</p>
	<ul>
		<li>水星</li>
		<li>金星</li>
		<li>地球</li>
		<li>火星</li>
		<li>木星</li>
		<li>土星</li>
		<li>天王星</li>
		<li>海王星</li>
		<li>冥王星</li>
	</ul>
	<script>
		function setEven(){
			$("li, span").css("font-weight","");
			var $evenItems=$("li:even");
			$evenItems.css("font-weight","bold");
			$("span:contains('Even')").css("font-weight","bold");
			$(".label").html("Even Clicked");
		}
		function setOdd(){
			$("li,span").css("font-weight","");
			var $oddItems=$("li:odd");
			$oddItems.css("font-weight","bold");
			$("span:contains('Odd')").css("font-weight","bold");
			$(".label").html("Odd Clicked");
		}
		function setFirst3(){
			$("li,span").css("font-weight","");
			var $first3=$("li:lt(3)");
			$first3.css("font-weight","bold");
			$("span:contains('First 3')").css("font-weight","bold");
			$(".label").html("First 3 Clicked");
			
			
		}
	</script>
</body>
</html>

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

注意1

使用jQuery的时候,一定记得加入这行代码

<script src="jquery-3.5.1"></script>
注意2
var $first3=$("li:lt(3)");

lt这里并不是大写的i,而是小写的L,如果写成大写的i无效

设置列表项水平排列

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	

<style>
	span{
		padding: 2px;
		border: 3px solid blue;
		color: white;
		background-color: blue;
		cursor: pointer;
	}
	
	.label{
		font-size: 24px;
		margin: 10px;
	}
	
	.horizontal{
		float: left;
		list-style-type: none;
		margin: 10px;
	}
</style>


</head>
<body>
	<script src="jquery-3.5.1"></script>
	<span onclick="setEven()">Even</span>
	<span onclick="setOdd()">Odd</span>
	<span onclick="setFirst3()">First 3</span>
	<span onclick="setHorizon()">Horizontal</span>
	<p class="label">星球</p>
	<ul>
		<li>水星</li>
		<li>金星</li>
		<li>地球</li>
		<li>火星</li>
		<li>木星</li>
		<li>土星</li>
		<li>天王星</li>
		<li>海王星</li>
		<li>冥王星</li>
	</ul>
	<script>
		function setEven(){
			$("li, span").css("font-weight","");
			var $evenItems=$("li:even");
			$evenItems.css("font-weight","bold");
			$("span:contains('Even')").css("font-weight","bold");
			$(".label").html("Even Clicked");
		}
		function setOdd(){
			$("li,span").css("font-weight","");
			var $oddItems=$("li:odd");
			$oddItems.css("font-weight","bold");
			$("span:contains('Odd')").css("font-weight","bold");
			$(".label").html("Odd Clicked");
		}
		function setFirst3(){
			$("li,span").css("font-weight","");
			var $first3=$("li:lt(3)");
			$first3.css("font-weight","bold");
			$("span:contains('First 3')").css("font-weight","bold");
			$(".label").html("First 3 Clicked");	
		}
		function setHorizon(){
			$("li").addClass('horizontal');
			$('.label').html("Horizontal")
		}
	</script>
</body>
</html>

在这里插入图片描述

操作jQuery对象和DOM元素

链式操作

  1. 可以在jQuery语句中串接多项jQuery操作,其中每项操作的目标都是前一项操作返回的结果。
$(document).ready(function(){
			var $content=$("div#content");
			var $firstP=$content.children("p:first");
			$firstP.css("font-weight","bold");
			var $spans=$firstP.children("span");
			$span.css("color","red");
		})

或者

$(document).ready(function(){
			$("document").children("p:first").css("font-weight","bold").children("span").css("color","red");
			}
		});

DOM筛选方法

方法示例描述
$("div").eq(1)选择指定索引处的元素,这里返回第二个<div>元素
$("option").filter(function(index){ return (this.value>5);})剔除不与筛选器匹配的元素,这里对当前集合中的每个元素执行指定的函数,仅返回value>5的元素,this指定当前迭代的DOM对象
$("li").first()获得第一个<li>元素
$("li").last()获得最后一个<li>元素
$("div").has("p")获得包含子元素<p><div>元素
$(".menu").not("span")获得class属性为menu且不是<span>的所有元素.not(selector or element or function(index) or index or object)
$("tr").slice(2,5)获得索引为2,3,4的<tr>元素

DOM节点遍历方法

方法示例描述
$("div").children("p")选择父元素为<div>的所有<p>元素
$("p.menu").closet("div")选择离属性class为menu 的<p>元素最近的<div>祖先
$("div").contents()选择<div>元素的所有子元素
$("table").find("span")选择包含在<table>元素中的所有<span>元素
$("p#title").next("p")查找id为title的<p>元素,并选择下一个同辈的<p>元素
$("p:first").nextAll()查找第一个<p>元素,并选择它后面的所有同辈元素
$("p:first").nextUntil("ul")查找第一个<p>元素,并选择它后面的所有同辈元素,直到遇到<ul>元素
$("div#menu").parent()查找id为menu的div元素,再选择其父元素
$("p#footer").prev("p")查找id为footer的p元素,再选择它的前一个同辈<p>元素
$(".menu").siblings("span")查找class为menu的元素的同辈元素

jQuery对象遍历方法

.each()

  1. .each()方法用来迭代当前jQuery对象元素集合,对每个元素执行指定的函数
$("p").each(function(idx){
			$(this).html("this is paragraph"+idx);
		})
  1. 迭代所有段落元素,并设置其内容,传入的参数idx为索引号,0表示第一个p元素,$(this)将this转换成了jQuery对象,以便调用html()方法。
	$("span").each(function(i){
			$(this).css('width','300px');
		})

如上:将所有<span>元素的width属性都设置为300像素

.map()

  1. .map()方法同样迭代jQuery对象包含的每个元素,和.each()方法的区别在于,.each()返回它操作的jQuery对象,而.map()返回一个新的jQuery对象,且包含每次迭代返回的值 。
var liValues=$("li").map(function(idx){
			return $(this).html();
		}).get().join(",");

每次迭代中,函数都返回<li>元素的HTML内容,get()方法则返回jQuery对象的JavaScript数组,然后对数组调用join()方法,生成一个用逗号分隔的字符串

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
<style>
	span{
		display: inline-block;
		color: white;
		text-align: center;
	}
</style>
</head>
<body>
	<script src="jquery-3.5.1"></script>
	<input type="button" value="each()方法" />
	<input type="button" value="map()方法" />
	
	<p>red 15</p>
	<p>blue 30</p>
	<p>gray  20</p>
	<p>black 40</p>
	<p>yellow 15</p>
	<p>green 35</p>
	<div></div>
	<script>
		$(document).ready(function(){
			$("input:eq(0)").click(function(){
			$("p").each(function(){
				var parts=$(this).html().split(" ");
				$(this).css({"font-size":parts[1]+"px","color":parts[0]});
			});
			});
			
			$("input:eq(1)").click(function(){
			var items=$("p").map(function(){
				var parts=$(this).html().split(" ");
				return {color:parts[0], size:parts[1]};
			}).get();
			for(var idx in items){
				var item=items[idx];
				var span=$("<span>" + item.color + "</span>");
				var size=item.size * 5;
				console.log(span);
				span.css({"background-color":item.color,"font-size":item.size+"px",
				"width":size,"height":size});
				$("div").append(span);
			}
			});
		});
	</script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

注意:

下面这个是实现了第一个input:

$("input:eq(0)").click(function(){
			$("p").each(function(){
				var parts=$(this).html().split(" ");
				$(this).css({"font-size":parts[1]+"px","color":parts[0]});
			});
			});

下面这个是实现了第二个input:

$("input:eq(1)").click(function(){
			var items=$("p").map(function(){
				var parts=$(this).html().split(" ");
				return {color:parts[0], size:parts[1]};
			}).get();
			for(var idx in items){
				var item=items[idx];
				var span=$("<span>" + item.color + "</span>");
				var size=item.size * 5;
				console.log(span);
				span.css({"background-color":item.color,"font-size":item.size+"px",
				"width":size,"height":size});
				$("div").append(span);
			}
			});

不要遗漏这个标签:

<div></div>

否则下方这行代码无效:

$("div").append(span);

也就不会显示出来喽

jQuery中的事件

jQuery初始化代码

  1. 可在两个不同的时间触发并初始化代码:DOM准备就绪和网页资源加载完毕。

DOM准备就绪

  1. DOM准备就绪:表示网页中DOM对象都已创建好,网页已显示,但网页资源(如图像)可能还未下载完毕
		$(document).ready(function(){
			//初始化代码;
});

网页资源加载完毕

  1. 网页资源加载完毕:如果执行初始化代码时需要使用资源信息,就需要这种方式
	$(document).load(function(){
			//初始化代码;
});

.on()方法

on()方法将事件处理程序关联到jQuery对象,off()方法删除关联到jQuery对象上的事件处理程序

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
<style>
	div{
		background-color: #CCCCCC;
		font-weight: bold;
		display:inline-block;
		margin: 3px;
		padding: 5px;
		
	}
</style>
</head>
<body>
	<script src="jquery-3.5.1"></script>
	<div id="div1">Say Yes</div>
	<div id="div2">Say No</div>
	<h1 id="heading"></h1>
	
	<script>
		function clickHandler(e){
			$("#"+e.data.objId).html(e.target.id+" says "+e.data.answer+" at X position: " + e.screenX);
		}
		
		$(document).ready(function(){
		$("#div1").on({"click":clickHandler},{"objId":"heading","answer":"yes"});
		$(document).on("click","#div2",{"objId":"heading","answer":"no"},clickHandler);
		});
	</script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

使用jQuery手工触发事件

  1. 与JS一样,jQuery对象也有很多时间类型对应的方法,可以直接调用,大多数元素都有click()方法,表单元素还有blur(),foucus()等方法。例如:触发所有<span>元素的click事件 $("span").click();
  2. jQuery还提供trigger()方法,用于在触发事件的同时指定事件对象的值
//对class属性为checkbox的所有元素触发click事件
$(".checkbox").trigger("click");
//传入简单的事件对象,事件类型设置为keypress,charCode属性设置为13,即回车键
$("input.bigText").trigger({'type':'keypress','charCode':13});
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
<style>
	span{
		margin: 3px; padding: 5px;
		background-color:#c0c0c0;
		border:3px ridge;
		display:inline-block;
		cursor: pointer;
		
	}
</style>
</head>
<body>
	<script src="jquery-3.5.1"></script>
	
	
	<p>Price:</p>
	<input type="text" />
	<span>&#x24;</span>
	<span>&#xa5;</span>
	<script>
		function inputHandler(e){
			var chr=String.fromCharCode(e.charCode);
			$("p").append(chr);
		}
		
		function spanHandler(e){
			var chrCode=e.target.innerHTML.charCodeAt(0);
			$("input").trigger({'type':'keypress','charCode':chrCode});
		}

		$(document).ready(function(){
		$("input").keypress(function(e){inputHandler(e)});
		$("span").click(function(e){spanHandler(e)});
		});
	</script>
</body>
</html>

在这里插入图片描述

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻梦&之璐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值