JQuery 基础知识
jQuery
jQuery 是一个快速、小型且功能丰富的 JavaScript 库。它通过可在多种浏览器上运行的易于使用的 API,使 HTML 文档遍历和操作、事件处理、动画和 Ajax 等事情变得更加简单。凭借多功能性和可扩展性的结合,jQuery 改变了数百万人编写 JavaScript 的方式。
- Reference:尚硅谷jQuery教程
- Website:jQuery
1 jQuery介绍
1.1 概述
概述
- jQuery是一个快速、简洁的JavaScript框架。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。JQuery封装了JavaScript常用的功能代码,提供了一套易于使用的API,可以跨多种浏览器工作,使HTML文档的遍历和操作、事件处理、动画设计和Ajax交互等操作变得更加简单。
作用
- jQuery最主要的作用是简化js的Dom树的操作
1.2 下载与引入
1.2.1 官方下载
- jQuery的官方下载地址:jQuery
1.2.2 版本
- 1.x:兼容IE678,使用最为广泛的,官方只做BUG维护,功能不再新增。因此一般项目来说,使用1.x版本就可以了,最终版本:1.12.4 (2016年5月20日)
- 2.x:不兼容IE678,很少有人使用,官方只做BUG维护,功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,最终版本:2.2.4 (2016年5月20日)
- 3.x:不兼容IE678,只支持最新的浏览器。除非特殊要求,一般不会使用3.x版本的,很多老的jQuery插件不支持这个版本。目前该版本是官方主要更新维护的版本
- 开发版本与生产版本,命名为jQuery-x.x.x.js为开发版本,命名为jQuery-x.x.x.min.js为生产版本,开发版本源码格式良好,有代码缩进和代码注释,方便开发人员查看源码,但体积稍大。而生产版本没有代码缩进和注释,且去掉了换行和空行,不方便发人员查看源码,但体积很小。
1.2.3 引入
在需要使用jQuery的html中使用js的引入方式进行引入,如下:
1 | <script type="text/javascript" src="jquery-x.x.x.js></script> |
1.2.4 引入测试
$(function(){ 代码 })
是指 $(document).ready(function(){}) 的简写
用来在DOM加载完成之后执行一系列预先定义好的函数。
1 |
|
1.3 jQuery对象与js对象之间的转换
1.3.1 转换关系
- jQuery本质上虽然也是js,但如果使用jQuery的属性和方法那么必须保证对象是jQuery对象,而不是js方式获得的DOM对象,二者的API方法不能混合使用,若想使用对方的API,需要进行对象的转换。
使用js方式获取的对象是js的DOM对象,使用jQuery方式获取的对象是jQuery对象。两者的转换关系如下:
==js的DOM对象转换成jQuery对象==,语法:
$(js的DOM对象)
1
2var jsDomEle = document.getElementById("myDiv"); //js的DOM对象
var $jQueryEle = $(jsDomEle); //js的DOM对象 转换成 jquery对象==jQuery对象转换成js对象==,语法:
jquery对象[索引] 或 jquery对象.get(索引)
1
2
3var $jQueryEle = $("#myDiv"); //jQuery对象
var jsDomEle = $jQueryEle[0]; //jquery对象 转换成 js的DOM对象
var jsDomEle2 = $jQueryEle.get(0) // jQuery对象转换成js的Dom对象, 使用get(x)
:key: JQuery对象变量名前面的符号代表jQuery,对象是行业书写规范,不加
$
,代码也没有错误。
1.3.2 示例代码
1 |
|
2 jQuery选择器
2.1 基本选择器
- 语法
选择器名称 | 语法 | 解释 |
---|---|---|
标签选择器(元素选择器) | $("标签名称") |
获得所有匹配标签名称的于元素 |
id选择器 | $("#id的属性值") |
获得与指定id属性值匹配的元素 |
类选择器 | $(".class的属性值") |
获得与指定的class属性值匹配的元素 |
1 | <script type="text/javascript"> |
2.2 层级选择器
- 获得A元素内部的所有的B元素:
$("A B ")
==后代选择器(包含子孙)== 获得A元素下面的所有B子元素:
$("A > B")
==只有儿子,没有孙子==获得A元素同级下一个B元素:
$("A + B")
==下一个兄弟==- 了解内容
- 获得A元素同级所有后面B元素:
$("A ~ B")
==后边的所有兄弟== - 获取A元素的同级B元素:
$("A").siblings("B")
==获取所有的兄弟==
- 获得A元素同级所有后面B元素:
1 | //<input type="button" value=" 改变 <body> 内所有 <div> 的背景色为红色" id="b1"/> |
2.3 属性选择器
- 获得有属性名的元素:
$("A[属性名]")
- 获得属性名 等于 值 元素:
$("A[属性名=值]")
复合属性选择器,多个属性同时过滤:
$("A[属性名!=值]...[属性名!=值]")
了解
获得属性名 不等于 值 元素:
$("A[属性名!=值]")
获得属性名 以 值 开头 元素:
$("A[属性名^=值]")
获得属性名 以 值 结尾 元素:
$("A[属性名$=值]")
获得属性名 含有 值 元素:
$("A[属性名*=值]")
1 | //<input type="button" value=" 含有属性title 的div元素背景色为红色" id="b1"/> |
2.4 基本过滤选择器
$("div:first")
- 获得选择的元素中的第一个元素:
:first
- 获得选择的元素中的最后一个元素:
:last
- 不包括指定内容的元素例如:
:not(selecter)
- 偶数,从 0 开始计数:
:even
- 奇数,从 0 开始技术:
:odd
- 指定索引(index)元素:
:eq(index)
- 大于指定索引(index)元素:
:gt(index)
- 小于指定索引(index)元素:
:lt(index)
获得标题,固定写法 (
/
….)
:header
了解
- 获得正在执行的动画,固定写法
:animated
- 获得正在执行的动画,固定写法
1 | // <input type="button" value=" 改变第一个 div 元素的背景色为 红色" id="b1"/> |
2.5 表单属性选择器
$(":text:enabled")
$("input[type='text']:enabled").
- 获得可用元素:
:enabled
- 获得不可用元素:
:disabled
- 获得单选/复选框选中的元素(单选radio ,多选checkbox):
:checked
- 获得下拉框选中的元素(下列列表select):
:selected
1 | // <input type="button" value=" 利用 jQuery 对象的 val() 方法改变表单内可用 <input> 元素的值" id="b1"/> |
3 jQuery的DOM操作
3.1 操作内容
操作内容
- text() 获取或修改文本内容 类似于
dom.innerText
- 修改内容填充为文本类型,不识别html样式
- html() 获取或修改html内容 类似
dom.innerHTML
- 修改内容可以识别html样式
- text() 获取或修改文本内容 类似于
:warning: text() 是获取设置所有
:warning: html() 是获取第一个,==设置所有==
1 | //获取所有span |
3.2 操作属性
操作属性
val()
获取或修改表单控件的value值 等于dom.value
prop()
获取或修改原生属性值(checked,selected)
attr()
获取或修改自定义属性值 等于dom.setAttribute()
dom.getAttribute()
1 | <script type="text/javascript"> |
3.3 操作样式
jQuery操作样式
- css() 获取或者修改CSS样式 用法
css(样式名)
获取一个样式 等于 dom.style.驼峰样式名css(样式名,样式值)
设置一个样式 dom.style.驼峰样式名=样式值css({样式名:样式值,样式名:样式值})
批量设置样式 dom.style.cssText = 样式名:样式值;样式名:样式值;
- css() 获取或者修改CSS样式 用法
addClass()
添加一个样式removeClass()
移除一个样式toggleClass()
切换一个样式
1 | <script> |
4.4 创建和插入对象
API方法 | 解释 |
---|---|
append(element) |
添加成最后一个子元素,两者之间是父子关系 |
prepend(element) |
添加成第一个子元素,两者之间是父子关系 |
$("<A id="11>aaaa</A>") |
创建A元素对象,同时可以给对象添加属性和标签体 |
before(element) |
添加到当前元素的前面,两者之间是兄弟关系 |
after(element) |
添加到当前元素的后面,两者之间是兄弟关系 |
insertBefore(element) |
将元素添加到另外一个元素之前,两者是兄弟关系 |
insertAfter(element) |
将元素添加到另外一个元素之后,两者是兄弟关系 |
1 | <script type="text/javascript"> |
5.5 删除对象
API方法 | 解释 |
---|---|
remove() | 删除指定元素 |
empty() | 清空指定元素的所有子元素 |
1 | <script type="text/javascript"> |
4 jQuery综合案例
4.1 表格隔行换色
1 | <script type="text/javascript"> |
4.2 复选框全选全不选
1 | <script type="text/javascript"> |
4.3 定时弹广告
- 页面打开,延迟几秒钟,广告从上向下慢慢滑下显示,停留几秒,再从下向上慢慢滑动隐藏。
1 |
|
5 jQuery动画
5.1 显示效果
方法名称 | 解释 |
---|---|
show([speed],[easing],[fn]]) |
显示元素方法 |
hide([speed],[easing],[fn]]) |
隐藏元素方法 |
toggle([speed],[easing],[fn]) |
切换元素方法,显示的使之隐藏,隐藏的使之显示 |
参数详解
- | 参数名称 | 解释 |
| ———— | —————————————————————————————— |
| speed | 三种预定速度之一的字符串(“slow”,”normal”, or “fast”)或表示动画时长的毫秒数值(如:1000) |
| easing | 用来指定切换效果,默认是”swing”(摆动),可用参数”linear”(直线) |
| fn | 在动画完成时执行的函数,每个元素执行一次 |
- | 参数名称 | 解释 |
1 | <script type="text/javascript"> |
5.2 滑动效果
方法名称 | 解释 |
---|---|
slideDown([speed,[easing],[fn]]) |
向下滑动方法 |
slideUp([speed,[easing],[fn]]) |
向上滑动方法 |
slideToggle([speed],[easing],[fn]) |
切换元素方法,向下使之向下,向下使之向上 |
参数
- | 参数名称 | 解释 |
| ———— | —————————————————————————————— |
| speed | 三种预定速度之一的字符串(“slow”,”normal”, or “fast”)或表示动画时长的毫秒数值(如:1000) |
| easing | 用来指定切换效果,默认是”swing”,可用参数”linear” |
| fn | 在动画完成时执行的函数,每个元素执行一次 |
- | 参数名称 | 解释 |
1 | <script type="text/javascript"> |
- 示例效果图
5.3 淡入淡出效果
方法名称 | 解释 |
---|---|
fadeIn([s],[e],[fn]) |
淡入方法 |
fadeOut([s],[e],[fn]) |
淡出方法 |
fadeTo([[s],o,[e],[fn]]) |
设置元素的透明度 |
fadeToggle([s,[e],[fn]]) |
淡入淡出之间切换 |
参数
| 参数名称 | 解释 |
| ———— | —————————————————————————————— |
| speed | 三种预定速度之一的字符串(“slow”,”normal”, or “fast”)或表示动画时长的毫秒数值(如:1000) |
| easing | 用来指定切换效果,默认是”swing”,可用参数”linear” |
| fn | 在动画完成时执行的函数,每个元素执行一次 |
| opacity | 一个0至1之间表示透明度的数字 |
1 | <script type="text/javascript"> |
6 jQuery的遍历
jQuery对象本身就是数组对象,通过jQuery选择器获得的都是满足该选择器条件的元素对象的集合体
因此常常需要对jQuery对象进行遍历
6.1 原始方式遍历
1 | for(var i=0;i<元素数组.length;i++){ |
1 | <script type="text/javascript"> |
- 测试结果:
6.2 对象方法遍历
jquery对象.each(function(index,element){});
- index:就是元素在集合中的索引
- element:就是集合中的每一个元素对象
1 | <script type="text/javascript"> |
6.3 全局方法遍历
$.each(jquery对象,function(index,element){});
- index:就是元素在集合中的索引
- element:就是集合中的每一个元素对象
1 | <script type="text/javascript"> |
6.4 for-of遍历
:pushpin: jQuery3.0 新特性
for(变量 of jquery对象){...}
- 变量:定义变量依次接受jquery数组中的每一个元素
- jquery对象:要被遍历的jquery对象
1 | <script type="text/javascript"> |
7 jQuery的事件
7.1 常用事件
jQuery绑定事件,事件名字没有on
事件名称 | 事件说明 |
---|---|
blur | 事件源失去焦点 |
click | 单击事件源 |
change | 内容改变 |
keydown | 接受键盘上的所有键(键盘按下) |
keypress | 接受键盘上的部分键(ctrl,alt,shift等无效)(键盘按下) |
keyup | 键盘抬起 |
mouseover | 鼠标悬停(鼠标移入) |
mouseout | 鼠标离开 |
7.1 on绑定事件
jQuery元素对象.on(事件名称,function(){...}
- 事件名称是jQuery的事件方法的方法名称,例如:click、mouseover、mouseout、focus、blur等
1 | <script type="text/javascript"> |
7.2 off解绑事件
jQuery元素对象.off(事件名称);
- 参数事件名称如果省略不写,可以解绑该jQuery对象上的所有事件
1 | <script type="text/javascript"> |
7.3 事件切换
7.3.1 普通写法
1 | <script type="text/javascript"> |
7.3.1 链式写法
1 | script type="text/javascript"> |
7.3.2 切换函数写法
hover([over,]out)
- over代表鼠标移入事件触发的函数
- out代表鼠标移出事件触发的函数
1 | <script type="text/javascript"> |
8 jQuery的插件
8.1 插件机制
8.1.1 概述
jQuery插件的机制很简单,就是利用jQuery提供的
jQuery.fn.extend()
和jQuery.extend()
方法,扩展jQuery的功能
8.1.2 插件机制语法
语法 | 解释 |
---|---|
jQuery.fn.extend(object) | 对jQuery对象进行方法扩展 |
jQuery.extend(object) | 对jQuery全局进行方法扩展 |
8.1.3 对jQuery对象进行方法扩展
1 | $.fn.extend({ |
1 | <script type="text/javascript"> |
8.1.3 对jQuery全局进行方法扩展
1 | <script type="text/javascript"> |
8.2 表单校验插件validator
8.2.1 插件概述
网络上有许多成熟的插件共使用者参考,插件就是将jquery实现的常用操作进行封装,封装后的“小框架“就可以叫做插件,按照插件的语法去操作可以实现很多复杂的功能,而我们需要做的是学会该插件的使用语法即可。
表单校验插件是按照一定的语法编写代码,可以使用简单的代码完成复杂的表单校验工作。
8.2.2 基本语法
1)开发步骤
下载jquery-validation插件
- CDN:
<script src="https://cdn.bootcdn.net/ajax/libs/jquery-validate/1.19.5/jquery.validate.min.js"></script>
- CDN:
将该插件(也就是一个js文件)导入到我们的工程中
在要使用校验插件的html中引入该js文件
编写表单校验的代码(语法)
1
2
3
4
5
6
7
8
9
10$("form表单的选择器").validate({
rules:{
表单项name值:校验规则,
表单项name值:校验规则... ...
},
messages:{
表单项name值:错误提示信息,
表单项name值:错误提示信息... ...
}
});- 其中,rules是对表单项校验的规则,messages是对应的表单项校验失败后的错误提示信息
- 注意,当错误提示信息不按照我们预想的位置显示时,我们可以按照如下方式进行设置自定义错误显示标签放在我们需要显示的位置,当此表单项验证不通过时会将此信息自动显示出来,jQuery验证插件会自动帮助我们控制它的显示与隐藏
1 | <lable for="html元素name值" class="error" style="display:none">错误信息</lable> |
- 如果设置了错误lable标签就不必在messages中设置此表单项错误提示信息了
2)常用的校验规则
校验类型 | 取值 | 描述 | |
---|---|---|---|
required | true | false | 必填字段 |
true | 邮件地址 | ||
url | 路径 | ||
date | true | 校验日期的有效性 | |
dateISO | true | 校验日期格式(YYYY-MM-dd) | |
number | 数字(负数,小数) | ||
digits | true | 整数 | |
minlength | 数字 | 最小长度 | |
maxlength | 数字 | 最大长度 | |
rangelength | [minL,maxL] | 长度范围 | |
min | 最小值 | ||
max | 最大值 | ||
range | [min,max] | 值范围 | |
equalTo:”#id” | jQuery表达式 | 两个值相同 | |
remote | url路径 | ajax校验 |
1 | <html xmlns="http://www.w3.org/1999/xhtml"> |
8.2.3 表单校验插件自定义校验方法
如果预定义的校验规则尚不能满足需求的话可以进行自定义校验规则:
自定义校验规则步骤如下:
- 使用
$.validator.addMethod("校验规则名称",function(value,element,params){});
- 在rules中通过校验规则名称使用校验规则
- 在messages中定义该规则对应的错误提示信息其中
value
是校验组件的value值element
是校验组件的节点对象params
是校验规则的参数
1 | <html> |