本文最后更新于
2023-12-28,距今已有 1015
天,若文章内容或图片链接失效,请留言反馈。
1. jQuery 基础
2. 选择器
- 基本选择器:
- 标签选择器:
$("html标签名") 获得所有匹配标签名称的元素。
- id 选择器:
$("#id的属性值") 获得与指定 id 属性值匹配的元素。
- 类选择器:
$(".class的属性值") 获得与指定的 class 属性值匹配的元素。
- 并集选择器:
$("选择器1,选择器2....") 获取多个选择器选中的所有元素。
- 层级选择器:
- 后代选择器:
$("A B"):选择 A 元素内部的所有 B 元素。
- 子选择器:
$("A > B") 选择 A 元素内部的所有 B 子元素。
- 属性选择器:
- 属性名称选择器:
$("A[属性名]"):包含指定属性的选择器。
- 属性选择器:
$("A[属性名='值']"):包含指定属性等于指定值的选择器
$("A[属性名!='值']"):包含指定属性不等于指定值的选择器
$("A[属性名^='值']"):包含指定属性的值以指定值开头的选择器
$("A[属性名$='值']"):包含指定属性的值以指定值结尾的选择器
$("A[属性名*='值']"):包含指定属性的值含有指定值的选择器
- 复合属性选择器:
$("A[属性名='值'][]..."):包含多个属性条件的选择器
- 过滤选择器:
- 首元素选择器 :
:first 获得选择的元素中的第一个元素
- 尾元素选择器 :
:last 获得选择的元素中的最后一个元素
- 非元素选择器:
:not(selector) 不包括指定内容的元素
- 偶数选择器:
:even 偶数,从 0 开始计数
- 奇数选择器:
:odd 奇数,从 0 开始计数
- 等于索引选择器:
:eq(index) 指定索引元素
- 大于索引选择器:
:gt(index) 大于指定索引元素
- 小于索引选择器:
:lt(index) 小于指定索引元素
- 标题选择器:
:header 获得标题(h1~h6)元素,固定写法
- 下拉框加上
multiple="multiple" 属性后可以变成多选的下拉框,可以用来做权限授予。
- 表单过滤选择器:
3. DOM 操作
- 内容操作:
html(): 获取/设置元素的标签体内容,空参为获取,有参数为设置。
text(): 获取/设置元素的标签体纯文本内容,设置纯文本的时候,会把此标签体内全部内容(包含子标签)都替换为文本,如果设置的内容中有 HTML 标签,也会以文本的形式展示(html()方法可以以标签形式展示),多个空格展示为一个空格。
val():获取/设置元素的 value 属性值。
- 通用属性操作
attr():获取/设置元素的属性,一个参数(属性名)为获取,两个参数(属性名,属性值)为设置。
removeAttr():删除属性
prop():获取/设置元素的属性
removeProp():删除属性
- attr 和 prop 区别?
- 如果操作的是元素的固有属性(id 和 name 不属于固有属性,class 为 div 的固有属性),则建议使用 prop,prop 获取 id 和 name 的话获取不到。
- 如果操作的是元素自定义的属性,则建议使用 attr,元素的 checked, selected, disabled 状态无法使用 attr 获取。
- 总结:一般使用 attr 即可,涉及到上面提到的三个使用 prop。
- 对 class 属性操作
addClass():添加 class 属性值
removeClass():删除 class 属性值
toggleClass():切换 class 属性
- 判断如果元素对象上存在
class="one",则将属性值 one 删除掉。如果元素对象上不存在 class="one",则添加。
css():获取/设置 CSS 属性值。
- CRUD 操作:两个对象都为 jQuery 对象
append():父元素将子元素追加到末尾
- 对象
1.append(对象2):将对象 2 添加到对象 1 元素内部,并且在末尾,并且原对象 1 会消失
prepend():父元素将子元素追加到开头
- 对象
1.prepend(对象2):将对象 2 添加到对象 1 元素内部,并且在开头
appendTo():
- 对象
1.appendTo(对象2):将对象 1 添加到对象 2 内部,并且在末尾
prependTo():
- 对象
1.prependTo(对象2):将对象 1 添加到对象 2 内部,并且在开头
after():添加元素到元素后边
- 对象
1.after(对象2):将对象 2 添加到对象 1 后边。对象 1 和对象 2 是兄弟关系
before():添加元素到元素前边
- 对象
1.before(对象2):将对象 2 添加到对象 1 前边。对象 1 和对象 2 是兄弟关系
insertAfter():
- 对象
1.insertAfter(对象2):将对象 1 添加到对象 2 后边。对象 1 和对象 2 是兄弟关系
insertBefore():
- 对象
1.insertBefore(对象2):将对象 1 添加到对象 2 前边。对象 1 和对象 2 是兄弟关系
remove():移除元素
empty():清空元素的所有后代元素
对象.empty():将对象的后代元素全部清空,但是保留当前对象以及其属性
4. jQuery 动画
- 默认显示和隐藏方式
show([speed],[easing],[fn]]):显示,刚开始即为显示
hide([speed],[easing],[fn]]):隐藏
toggle([speed],[easing],[fn]):切换
- 参数解释
- speed:动画的速度。可以设置为 "slow","normal", "fast" 或表示动画时长的毫秒数值(如:1000)
- easing:用来指定切换效果,默认是"swing",可用参数"linear"
- swing:动画执行时效果是 先慢,中间快,最后又慢
- linear:动画执行时速度是匀速的
- fn:在动画完成时执行的函数,每个元素执行一次。
- 三个参数皆为可选的。
- 滑动显示和隐藏方式
slideDown([speed],[easing],[fn]):滑动显示
slideUp([speed,[easing],[fn]]):滑动隐藏
slideToggle([speed],[easing],[fn]):滑动切换
- 淡入淡出显示和隐藏方式
fadeIn([speed],[easing],[fn]):淡入显示
fadeOut([speed],[easing],[fn]):淡出显示
fadeToggle([speed,[easing],[fn]]):淡入淡出切换
5. jQuery 遍历
- js 的遍历方式:
for(初始化值;循环结束条件;步长)
jquery对象.each(function([index,[element]]){});
- 对于数组中的每个对象,去执行括号中的函数。
- 函数的两个参数为可选项,也可以只传递 index,但不能直接传递 element。
- index:就是元素在集合中的索引。
- element:就是集合中的每一个元素对象,是 js 对象,需要参数传递。
- this:集合中的每一个元素对象,是 js 对象,可以直接使用。
- 回调函数返回值:
- false:如果当前 function
return false,则结束循环(break)。
- true:如果当前 function
return true,则结束本次循环,继续下次循环(continue),默认在最后返回 true。
$.each(object, [callback]):object 可以是 jQuery 对象,也可以是 js 对象,其余与上遍历函数类似。
for..of: jQuery 3.0 版本之后提供的方式,for(元素对象 of 容器对象)
6. 事件绑定
7. 插件
- 在 jQuery 插件的范围里, this 关键字代表了这个插件将要执行的 jQuery 对象, 但是在其他包含 callback 的 jQuery 函数中,this 关键字代表了原生的 DOM 元素。
$ 就是 jQuery 对象,$() 就是 jQuery(),在里面可以传参数,作用就是获取元素。
$ 可以调用那些不需要操作对象的方法(像 Java 代码中的静态方法,不用声明对象就可以操作)。
- 插件:增强 jQuery 的功能
- 实现方式:
$.fn.extend(object):增强通过 jQuery 获取的对象的功能,如 $("#id")
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>01-jQuery对象进行方法扩展</title>
<script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
//使用jquery插件 给jq对象添加2个方法 check()选中所有复选框,uncheck()取消选中所有复选框
//1.定义jqeury的对象插件
$.fn.extend({
//定义了一个check()方法。所有的jq对象都可以调用该方法
check:function () {
//让复选框选中
//this:调用该方法的jq对象
this.prop("checked",true);
},
uncheck:function () {
//让复选框不选中
this.prop("checked",false);
}
});
$(function () {
// 获取按钮
//$("#btn-check").check();
//复选框对象.check();
$("#btn-check").click(function () {
//获取复选框对象
$("input[type='checkbox']").check();
});
$("#btn-uncheck").click(function () {
//获取复选框对象
$("input[type='checkbox']").uncheck();
});
});
</script>
</head>
<body>
<input id="btn-check" type="button" value="点击选中复选框" onclick="checkFn()">
<input id="btn-uncheck" type="button" value="点击取消复选框选中" onclick="uncheckFn()">
<br/>
<input type="checkbox" value="football">足球
<input type="checkbox" value="basketball">篮球
<input type="checkbox" value="volleyball">排球
</body>
</html>
$.extend(object):增强 JQeury 对象自身的功能 $/jQuery
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>01-jQuery对象进行方法扩展</title>
<script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
//对全局方法扩展2个方法,扩展min方法:求2个值的最小值;扩展max方法:求2个值最大值
$.extend({
max:function (a,b) {
//返回两数中的较大值
return a >= b ? a:b;
},
min:function (a,b) {
//返回两数中的较小值
return a <= b ? a:b;
}
});
//调用全局方法
var max = $.max(4,3);
//alert(max);
var min = $.min(1,2);
alert(min);
</script>
</head>
<body>
</body>
</html>