文章目录
- jQuery基础
- 1. 优势
- 2. 版本
- 3. 基本语法
- 4. 选择器
- 基本选择器
- 层次选择器
- 属性选择器
- 过滤选择器
- 基本过滤选择器
- 可见性过滤选择器
- 注意事项
jQuery基础
jQuery 是一个功能强大且易于使用的 JavaScript 库,它极大地简化了前端开发的工作。无论是 DOM 操作、事件处理还是 Ajax 交互,jQuery 都能提供简洁高效的解决方案。尽管近年来随着 ES6+ 以及框架如 React、Vue 和 Angular 的兴起,jQuery 的使用频率有所下降,但对于许多项目来说,尤其是那些不需要复杂状态管理和虚拟 DOM 更新的项目,jQuery 仍然是一个非常实用的选择。
设计思想:write less, do more
- jQuery 官网
- jQuery 中文 API 手册
1. 优势
通过一个简单的例子来对比原生 JavaScript 和使用 jQuery 的不同之处
需求说明:
当用户点击页面中的按钮时,将一个文本框中的文本变为大写,并且改变背景颜色。
<!-- 使用原生 JavaScript -->
<style>
.uppercase {background-color: yellow;}
</style>
<body>
<input type="text" id="myInput" value="hello world">
<button id="convert">转换为大写</button>
<script>
document.getElementById('convert').addEventListener('click', function() {
var inputElement = document.getElementById('myInput');
inputElement.value = inputElement.value.toUpperCase();
inputElement.classList.add('uppercase');
});
</script>
</body>
<!-- 使用原生 jQuery -->
<style>
.uppercase {background-color: yellow;}
</style>
<script src="https://code.jquery.com/jquery-3.x.x.min.js"></script>
<body>
<input type="text" id="myInput" value="hello world">
<button id="convert">转换为大写</button>
<script>
$(document).ready(function() {
$("#convert").click(function() {
var inputElement = $("#myInput");
inputElement.val(inputElement.val().toUpperCase());
inputElement.addClass('uppercase');
});
});
</script>
</body>
代码量
- 原生 JavaScript:需要导入 DOM 元素,添加事件监听器,并且手动改变文本和样式。
- jQuery:使用链式调用和更简洁的选择器,使得代码更短更清晰。
语法简洁性
- 原生 JavaScript:语法相对繁琐,需要显式地获取元素引用,绑定事件处理函数。
- jQuery:语法更为简洁,使用
$
符号和链式调用可以让代码更加紧凑。
易读性和可维护性
- 原生 JavaScript:虽然现代 JavaScript 已经非常强大,但是对于一些简单的DOM操作,代码仍然显得有些冗长。
- jQuery:代码更容易阅读,维护起来也更方便
JavaScript 转 jQuery
$(js对象);
jQuery 转 JavaScript
$(选择器).get(0);
/$(选择器)[0]
2. 版本
jQuery 库分开发版和发布版
名称 | 大小 | 说明 |
---|---|---|
jquery-3.版本号.js(开发版) | 约286KB | 完整无压缩版本,主要用于测试、学习和开发 |
jquery-3.版本号.min.js(发布版) | 约94.8KB | 经过工具压缩或经过服务器开启Gzip压缩,主要应用于发布的产品和项目 |
<script src="js/jquery-3.3.1.min.js" type="text/javascript"></script>
3. 基本语法
// 为页面加载事件绑定方法
$(document).ready(function() {
alert("我欲奔赴沙场征战jQuery,势必攻克之!");
});
$(document).ready()
与 window.onload
类似,但也有区别
window.onload | $(document).ready() | |
---|---|---|
执行时机 | 必须等待网页中所有的内容加载完毕后(包括图片、flash、视频等)才能执行 | 网页中所有 DOM 文档结构绘制完毕后即刻执行,可能与 DOM 元素关联的内容(图片、flash、视频等)并没有加载完 |
编写个数 | 同一页面不能同时编写多个 | 同一页面能同时编写多个 |
简化写法 | 无 | $(function(){ // 执行代码 }); |
4. 选择器
jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作
基础语法是:$(selector).action()
基本选择器
标签选择器、类选择器、ID选择器、并集选择器和全局选择器
名称 | 语法构成 | 描述 | 示例 |
---|---|---|---|
标签选择器 | element | 根据给定的标签名匹配元素 | $(“h2”)选取所有h2元素 |
类选择器 | .class | 根据给定的class匹配元素 | $(“.title”)选取所有class为title的元素 |
ID选择器 | #id | 根据给定的id匹配元素 | $(“#title”)选取id为title的元素 |
并集选择器 | selector1,selector2,…,selectorN | 将每一个选择器匹配的元素合并后一起返回 | $(“div,p,.title” )选取所有div、p和拥有class为title的元素 |
全局选择器 | * | 匹配所有元素 | $(“*”)选取所有元素 |
标签选择器根据给定的标签名匹配元素
$(document).ready(function(){
$("dt").click(function(){
$("dd").css("display","block"); // 设置<dd>标签中的内容显示出来
});
$("h1").css("color","blue"); // 设置<h1>标签中的字体颜色为蓝色
})
类选择器根据给定的class匹配元素
$(".price").css({"background":"#efefef","padding":"5px"});
// 设置class为price元素的背景颜色和内边距
ID选择器根据给定的 id 匹配元素
$("#author").css("color","#083499");
// 设置 id 为 author 的元素的字体颜色
并集选择器用来合并元素集合
$(".intro,dt,dd").css("color","#ff0000");
// 改变 class 为 intro,所有dt,dd颜色为纯红色
全局选择器可以获取所有元素
$("*").css("font-weight","bold");
// 设置所有元素的字体加粗显示
层次选择器
通过 DOM 元素之间的层次关系来获取元素
名称 | 语法构成 | 描述 | 示例 |
---|---|---|---|
后代选择器 | ancestor descendant | 选取ancestor元素里的所有descendant(后代)元素 | $(“#menu span”)选取#menu下的<span>元素 |
子选择器 | parent>child | 选取parent元素下的child(子)元素 | $(“#menu>span”)选取#menu的子元素<span> |
相邻元素选择器 | prev+next | 选取紧邻prev元素之后的next元素 | $(“h2+dl”)选取紧邻<h2>元素之后的同辈元素<dl> |
同辈元素选择器 | prev~sibings | 选取prev元素之后的所有siblings元素 | $(“h2~dl”)选取<h2>元素之后所有的同辈元素<dl> |
后代选择器用来获取元素的后代元素
$(".textRight p").css("color","red");
// 设置class为textRight元素中的所有<p>标签的字体全部为红色
子选择器用来获取元素的子元素
$(".textRight>p").css("color","red");
// 设置class为textRight元素中的子元素<p>标签的字体全部为红色
相邻选择器用来选取紧邻目标元素的下一个元素
$("h1+p").css("text-decoration","underline");
同辈选择器用来选取目标元素之后的所有同辈元素
$("h1~p").css("text-decoration","underline");
属性选择器
通过 HTML 元素的属性来选择元素
语法构成 | 描述 | 示例 |
---|---|---|
[attribute^=value] | 选取给定属性是以某些特定值开始的元素 | $(“[href^=‘en’]”)选取href属性值以en开头的元素 |
[attribute$=value] | 选取给定属性是以某些特定值结尾的元素 | ( " [ h r e f ("[href ("[href=‘.jpg’]")选取href属性值以.jpg结尾的元素 |
[attribute*=value] | 选取给定属性是以包含某些值的元素 | $(“[href*=‘txt’]”)选取href属性值中含有txt的元素 |
根据属性名获取元素
1)根据是否包含某属性来选取元素
// a 标签带有 class 属性
$("#news a[class]").css("background","#c9cbcb");
根据属性值获取元素
1)根据属性的值来选取元素
// class 属性值为 hot
$("#news a[class='hot']").css("background","#c9cbcb");
2)指定选取不等于属性是某个特定值的元素
$("#news a[class!='hot']").css("background","#c9cbcb");
根据属性值包含特定的值获取元素
1)指定属性值以指定值开头的元素
// a 标签 href 属性值以 www 开头
$("#news a[href^='www']").css("background","#c9cbcb");
2)指定属性值以指定值结尾的元素
// a 标签 href 属性值以 html 结尾
$("#news a[href$='html']").css("background","#c9cbcb");
3)指定属性值包含指定值的元素
// a 标签 href 属性值包含 k2 的元素
$("#news a[href*='k2']").css("background","#c9cbcb");
过滤选择器
通过特定的过滤规则来筛选出所需的元素
主要分类
基本过滤选择器
可见性过滤选择器
表单对象过滤选择器
内容过滤选择器、子元素过滤选择器……
基本过滤选择器
语法 | 描述 | 示例 |
---|---|---|
:first | 选取第一个元素 | $(“li:first”)选取所有<li>元素中的第一个<li>元素 |
:last | 选取最后一个元素 | $(“li:last”)选取所有<li>元素中的最后一个<li>元素 |
:not(selector) | 选取去除所有与给定选择器匹配的元素 | $(“li:not(.three)”)选取class不是three的元素 |
:even | 选取索引是偶数的所有元素 | $(“li:even”)选取索引是偶数的所有<li>元素 |
:odd | 选取索引是奇数的所有元素 | $(“li:odd”)选取索引是奇数的所有<li>元素 |
:eq(index) | 选取索引等于index的元素 | $(“li:eq(1)”)选取索引等于1的<li>元素 |
:gt(index) | 选取索引大于index的元素 | $(“li:gt(1)”)选取索引大于1的<li>元素 |
:lt(index) | 选取索引小于index的元素 | $(“li:gt(1)”)选取索引小于1的<li>元素 |
:header | 选取所有标题元素 如h1~h6 | $(“:header”)选取网页中所有标题元素 |
:focus | 选取当前获取焦点的元素 | $(“:focus”)选取当前获取焦点的元素 |
:animated | 选择所有动画 | $(“:animated”)选取当前所有动画元素 |
案例:制作仿奥列表页面
<div class="contain">
<h2>祝福冬奥</h2>
<ul>
<li> 贝克汉姆:衷心希望北京能够申办成功!</li>
<li> 姚明:北京申冬奥是个非常棒的机会!加油!</li>
<li> 张虹:北京办冬奥,大家的热情定超乎想象! </li>
<li> 肖恩怀特:我爱北京,支持北京申办冬奥会!</li>
<li> 赵宏博:北京申办冬奥会是再合适不过了!</li>
<li> 你喜欢哪些冬季运动项目?(点击进入调查页)</li>
</ul>
</div>
$(".contain:header").css({"background":"#2a65ba","color":"#ffffff"});
$(".contain li:first").css({"font-size":"16px","color":"#e90202"});
$(".contain li:last").css("border","none");
$(".contain li:even").css("background","#f0f0f0");
$(".contain li:odd").css("background","#cccccc");
$(".contain:header").css({"background":"#2a65ba","color":"#ffffff"});
$(".contain li:first").css({"font-size":"16px","color":"#e90202"});
$(".contain li:last").css("border","none");
$(".contain li:lt(2)").css({"color":"#708b02"});
$(".contain li:gt(3)").css({"color":"#b66302"});
可见性过滤选择器
通过元素显示状态来选取元素
语法 | 描述 | 示例 |
---|---|---|
:visible | 选取所有可见的元素 | $(“:visible”)选取所有可见的元素 |
:hidden | 选取所有隐藏的元素 | $(“:hidden”)选取所有隐藏的元素 |
$("p:hidden").show();
$("p:visible").hide();
注意事项
1)特殊符号的转义
<div id="id#a">aa</div>
<div id="id[2]">cc</div>
$("#id#a"); =====> $("#id\\#a");
$("#id[2]"); =====> $("#id\\[2\\]");
2)选择器的书写规范很严格,多一个空格或少一个空格,都会影响选择器的效果
// 带空格的jQuery选择器 选取class为“test”的元素内部的隐藏元素
var $t_a = $(".test :hidden");
// 不带空格的jQuery选择器 选取隐藏的class为“test”的元素
var $t_b = $(".test:hidden");