摘要:本文学习了JQuery库,包括选择器、文档处理、事件、效果,以及AJAX调用。
1 简介
JQuery这个名字由JS和Query组合而成,但并非官方定义的全称。
JQuery是一个流行的JS库,旨在简化HTML文档遍历、事件处理、动画和AJAX交互等网页开发任务。尽管名字中有“Query”,它并不用于数据库查询,而是专注于提供易于使用的API来操作DOM(文档对象模型)和实现各种前端功能。
JQuery设计的宗旨是写更少的代码,做更多的事情。
2 引入
JQuery库实际上就是一个JS文件,只需要在网页中直接引入这个文件就可以了。
从官网引入:
1 | <script src="jquery-3.6.0.min.js"></script> |
因为网络原因,建议从CDN引入:
1 | <script src="https://unpkg.com/jquery@3.6.0/dist/jquery.min.js"></script> |
也可以下载JQuery文件并放置在项目中,然后通过script元素引用。
3 语法
3.1 基础语法
JQuery语法是通过选取HTML元素,并对选取的元素执行某些操作。
基础语法:
1 | $(selector).action(); |
美元$符号定义JQuery,选择器selector用于查询HTML元素,方法action()执行对元素的操作。
3.2 核心
JQuery库为window对象定义了一个$函数JQuery(),也可以写作$()。
JQuery()函数会根据参数数据类型的不同做不同的工作,返回一个JQuery封装的伪数组对象。
3.2.1 四种参数形式
JQuery()函数中可以存放的四种参数形式,返回的均是JQuery对象。
3.2.1.1 选择器字符串
格式为:
1 | $(选择器字符串) |
通过相应选择器获取对应的DOM对象,然后将这些DOM封装到一个JQuery对象中并返回:
1 | var $div = $('div');// 选取所有div元素节点并返回,将这些DOM节点封装到JQuery对象 |
3.2.1.2 DOM对象
格式为:
1 | $(DOM对象) |
将该DOM对象封装成JQuery对象并返回:
1 | var div = document.getElementsByTagName('div'); |
3.2.1.3 HTML文本字符串
格式为:
1 | $(HTML文本字符串) |
根据传入的文本创建好HTML元素并封装成JQuery对象返回:
1 | var $div = $('<div class="one">one<div>');// 创建一个类名为one的div元素且将其封装成一个JQuery对象 |
3.2.1.4 匿名函数
格式为:
1 | $(匿名函数) |
当文档结构加载完毕之后JQuery函数调用匿名函数:
1 | $(function () {});// 文档结构加载完毕后执行function函数中的代码 |
3.2.2 JQuery对象和DOM对象
JQuery对象是JQuery独有的,JQuery对象无法使用DOM对象的任何方法。同样的,DOM对象也不能使用JQuery里的任何方法。
JQuery对象和DOM对象的转化:
- JQuery对象转化为DOM对象:
js 1
$('div')[0];// 在JQuery对象后面添加数值位置即可选择其获取到的JQuery类数组对象中相应位置存放的DOM对象
- DOM对象转化为JQuery对象:
js 1
2var div = document.getElementsByTagName('div');// 多个div返回的是一个DOM类数组对象
var $div = $(div);// 将DOM对象作为JQuery函数的参数即可将该DOM对象转化为JQuery对象
JQuery对象的操作实际上就是对JQuery数组中DOM对象的批量操作。
3.3 选择器
3.3.1 基本选择器
基本选择器:
| 分类 | 示例 | 说明 |
|---|---|---|
| id选择器 | $('#username') | 匹配id属性为username的第一个元素 |
| class选择器 | $('.red') | 匹配class属性包含red的所有元素 |
| 标签选择器 | $('span') | 匹配标签名为span的所有元素 |
| 多选择器 | $('#username,.red, span, div') | 匹配多个选择器匹配的所有元素 |
| 全部选择器 | $('*') | 匹配页面上的所有元素 |
3.3.2 层次选择器
层次选择器:
| 分类 | 示例 | 说明 |
|---|---|---|
| 匹配子元素 | $('form>input') | 在所有form元素的子元素中匹配input元素 |
| 匹配后代元素 | $('form input') | 在所有form元素的后代元素中匹配input元素,后代元素包括子元素和孙子元素 |
| 匹配之后相邻的兄弟元素 | $('label+input') | 在所有label元素后相邻的兄弟元素中匹配input元素 |
| 匹配之后的兄弟元素 | $('label~input') | 在所有label元素后的兄弟元素中匹配input元素 |
3.3.3 过滤选择器
过滤选择器主要是通过特定的过滤规则来筛选出所需的DOM元素,该选择器都以:开头。
过滤选择器:
| 分类 | 示例 | 说明 |
|---|---|---|
| 匹配第一个元素 | $('tr:first') | 匹配第一个tr元素 |
| 匹配最后一个元素 | $('tr:last') | 匹配最后一个tr元素 |
| 匹配偶数索引元素 | $('tr:even') | 匹配所有索引值为偶数的tr元素,从0开始计数 |
| 匹配奇数索引元素 | $('tr:odd') | 匹配所有索引值为奇数的tr元素,从0开始计数 |
| 匹配等于指定索引的元素 | $('tr:eq(3)') | 匹配索引值等于3的tr元素,从0开始计数 |
| 匹配大于指定索引的元素 | $('tr:gt(3)') | 匹配所有索引值大于3的tr元素,从0开始计数 |
| 匹配小于指定索引的元素 | $('tr:lt(3)') | 匹配所有索引值小于3的tr元素,从0开始计数 |
| 匹配不被指定的元素 | $('tr:not(:eq(3))') | 匹配索引值不等于3的tr元素,从0开始计数 |
子元素过滤选择器:
| 分类 | 示例 | 说明 |
|---|---|---|
| 匹配指定的子元素 | $('td:nth-child(3)') | 在所有父元素的第3个子元素中,匹配td元素 |
| 匹配指定的第一个子元素 | $('td:first-child()') | 在所有父元素的第一个子元素中,匹配td元素 |
| 匹配指定的最后一个子元素 | $('td:last-child()') | 在所有父元素的最后一个子元素中,匹配td元素 |
属性过滤选择器:
| 分类 | 示例 | 说明 |
|---|---|---|
| 匹配指定属性的元素 | $('input[name]') | 匹配name属性存在的input元素 |
| 匹配属性和指定属性值相同的元素 | $('input[name="username"]') | 匹配name属性的属性值和username相同的input元素 |
| 匹配属性和指定属性值不同的元素 | $('input[name!="username"]') | 匹配name属性的属性值和username不同的input元素 |
| 匹配属性以指定属性值开始的元素 | $('input[name^="user"]') | 匹配name属性的属性值以user开始的input元素 |
| 匹配属性以指定属性值结束的元素 | $('input[name$="user"]') | 匹配name属性的属性值以user结束的input元素 |
| 匹配属性包含指定属性值的元素 | $('input[name*="user"]') | 匹配name属性的属性值包含user的input元素 |
表单过滤选择器:
| 分类 | 示例 | 说明 |
|---|---|---|
| 匹配输入框元素 | $(':input') | 匹配所有input元素,即匹配所有输入框元素 |
| 匹配文本框元素 | $(':text') | 匹配所有type属性值为text的input元素 |
| 匹配密码框元素 | $(':password') | 匹配所有type属性值为password的input元素 |
| 匹配单选框元素 | $(':radio') | 匹配所有type属性值为radio的input元素 |
| 匹配复选框元素 | $(':checkbox') | 匹配所有type属性值为checkbox的input元素 |
| 匹配按钮元素 | $(':button') | 匹配所有type属性值为button的input元素 |
| 匹配提交按钮元素 | $(':submit') | 匹配所有type属性值为submit的input元素 |
| 匹配重置按钮元素 | $(':reset') | 匹配所有type属性值为reset的input元素 |
表单对象属性过滤选择器:
| 分类 | 示例 | 说明 |
|---|---|---|
| 匹配禁用的表单元素 | $('input:disabled') | 匹配所有disabled属性值为true的input元素 |
| 匹配启用的表单元素 | $('input:enabled') | 匹配所有disabled属性值为false的input元素 |
| 匹配选中的选项元素 | $('input:checked') | 匹配选中的input选项元素,包括单选框和复选框 |
| 匹配选中的下拉项元素 | $('select option:selected') | 匹配选中的option选项元素 |
| 匹配所有隐藏元素 | $('div:hidden') | 匹配所有隐藏的div元素 |
3.4 文档处理
3.4.1 插入节点
插入节点:
| 分类 | 示例 | 说明 |
|---|---|---|
| 插入到内部尾部 | $('p').append(插入内容) | 向p元素内部的尾部插入指定内容,插入内容作为子节点 |
| 插入到内部头部 | $('p').prepend(插入内容) | 向p元素内部的头部插入指定内容,插入内容作为子节点 |
| 插入到外部尾部 | $('p').after(插入内容) | 向p元素外部的尾部插入指定内容,插入内容作为兄弟节点 |
| 插入到外部头部 | $('p').before(插入内容) | 向p元素外部的头部插入指定内容,插入内容作为兄弟节点 |
3.4.2 删除节点
删除节点:
| 分类 | 示例 | 说明 |
|---|---|---|
| 删除子节点 | $('div').empty() | 删除div元素的子节点和内容节点,保留div元素本身 |
| 删除节点 | $('div').remove() | 删除div元素,包括div元素本身,以及div元素的子节点和内容节点 |
3.4.3 查找节点
查找节点:
| 分类 | 示例 | 说明 |
|---|---|---|
| 查找节点 | $('div').find('span') | 在div元素中查找span元素,即匹配div元素的span后代元素 |
| 遍历节点 | $('div').each(function (index,element) {}) |
|
3.4.4 修改节点
内容操作:
| 分类 | 示例 | 说明 |
|---|---|---|
| 获取文本内容 | $('#welcome').text() | 获取id属性为welcome的元素的文本内容 |
| 修改文本内容 | $('#welcome').text('欢迎') | 修改id属性为welcome的元素的文本内容为欢迎 |
值操作:
| 分类 | 示例 | 说明 |
|---|---|---|
| 获取value属性 | $('#username').val() | 获取id属性为username的元素的文本内容 |
| 修改value属性 | $('#username').val('佚名') | 修改id属性为username的元素的文本内容为佚名 |
属性操作:
| 分类 | 示例 | 说明 |
|---|---|---|
| 获取指定属性 | $('#username').attr('readonly') | 获取id属性为username的元素的readonly属性 |
| 修改指定属性 | $('#username').attr('readonly',true) | 修改id属性为username的元素的readonly属性为true |
| 删除指定属性 | $('#username').removeAttr('readonly') | 删除id属性为username的元素的readonly属性 |
类操作:
| 分类 | 示例 | 说明 |
|---|---|---|
| 增加指定类 | $('#username').addClass('username') | 给id属性为username的元素增加username类 |
| 删除指定类 | $('#username').removeClass('username') | 给id属性为username的元素删除username类 |
样式操作:
| 分类 | 示例 | 说明 |
|---|---|---|
| 获取指定样式 | $('#username').css('color') | 获取id属性为username的元素的color样式 |
| 修改指定样式 | $('#username').css('color','red') | 修改id属性为username的元素的color样式为red |
3.5 事件
常用事件:
| 分类 | 示例 | 说明 |
|---|---|---|
| 加载 | $(document).ready(function () {}) | 在页面加载DOM结构后执行方法 |
| 点击 | $('#submit').click(function () {}) | 当id属性为submit的元素在点击时执行方法 |
| 获得焦点 | $('#username').focus(function () {}) | 当id属性为username的元素在获得焦点时执行方法 |
| 失去焦点 | $('#username').blur(function () {}) | 当id属性为username的元素在失去焦点时执行方法 |
| 改变 | $('#username').change(function () {}) | 当id属性为username的元素在改变值后失去焦点时执行方法 |
| 表单提交 | $('#form').submit(function () {}) | 当id属性为form的表单元素在提交时执行方法 |
3.6 效果
常用效果:
| 分类 | 示例 | 说明 |
|---|---|---|
| 显示 | $('#username').show() | 显示id属性为username的元素 |
| 隐藏 | $('#username').hide() | 隐藏id属性为username的元素 |
| 切换 | $('#username').toggle() | 切换id属性为username的元素的可见性 |
3.7 AJAX
发送get请求:
1 | $.get(url, {name:'John',location:'Boston'}, function (data) { |
发送post请求:
1 | $.post(url, {name:'John',location:'Boston'}, function (data) { |
发送ajax请求:
1 | $.ajax({ |
条