jQuery
jQuery
JavaScript 库
用于开发软件的子程序集合。库和可执行文件的区别是,库不是独立程序,他们是向其他程序提供服务的代码库链接。
JavaScript 库:即 library,是一个封装好的特定的集合(方法和函数)。就是把各种常用的代码片段,组织起来放在一个 js 文件里,组成一个包,这个包就是 JavaScript 库。
简单理解:就是一个 JS文件,里面对我们原生 JS代码进行了封装,存放到里面。这样我们就可以快速高效的使用这些封装好的功能了。
对于第三方库,除了下载使用,还可以通过CDN在线使用,CDN称之为内容分发网络,简单来说,就是提供很多的服务器,用户访问时,自动就近选择服务器给用户提供资源
国内使用广泛的免费CDN站点:https://www.bootcdn.cn/
jQuery介绍
jQuery 是一个快速、简洁的 JavaScript 框架,是继 Prototype 之后又一个优秀的 JavaScript 代码库( 或 JavaScript 框架 )。 jQuery 设计的宗旨是 “write Less,Do More”,即倡导写更少的代码,做更多的事情。
jQuery = javascript Query(查询)。意思是查询 js,把 js 中的 DOM 操作做了封装,我们可以快速的查询使用里面的功能。
它封装 JavaScript 常用的功能代码,提供一种简便的 JavaScript 设计模式,优化 HTML 文档操作、事件处理、动画设计和 Ajax 交互。
一句话,jQuery让操作DOM更简便。
jQuery函数
$
是 jQuery 的别称,在代码中可以使用 jQuery 代替$
,但为了方便,通常都使用$
。
jQuery 的入口函数
Js 入口函数会在 DOM 元素加载完毕并且图片也加载完毕之后再执行
jQuery 入口函数会等到 DOM 元素加载完毕,但不会等到图片加载完毕再执行
1 | // 简化方式,推荐 |
冲突——多库共存
原因:随着jQuery的流行,采用jQuery和$符为命名空间的 js 库越来越多,当然 jQuery 的$符也是参照的 Prototype库的,所以当多个库同时以$符或者 jQuery 为命名空间时,那么此时,就会产生冲突。
解决方法:
1.释放使用权
1 | jQuery.noConflict(); |
2.修改访问符号
1 | var suiBian = jQuery.noConflict(); |
DOM对象 和 jQuery 对象
DOM 对象:用原生 js 获取过来的对象就是 DOM 对象。
jQuery 对象:用 jQuery 方式获取过来的对象就是 jQuery 对象。本质:通过 $ 把 DOM 元素进行了封装(伪数组形式存储)。
jQuery 对象只能使用 jQuery 方法,反之亦然。
相互转换
- DOM –> jQuery
1 | $('DOM对象'); |
jQuery –> DOM(两种方式)
1
2$('DOM对象')[index]; // index 是索引号
$('DOM对象').get(index);
jQuery 常用 API
查询https://jquery.cuishifeng.cn/toggle.html文档
jQuery思路
排他思想
1 | $(function() { |
链式编程
1 | $(function() { |
属性操作
① 获取属性语法
1 | prop("属性") |
② 设置属性语法
1 | prop("属性","属性值") |
设置或获取元素自定义属性值 attr()
自定义属性就是用户自己给元素添加的属性。比如给li
添加index="1"
。
① 获取属性语法
1 | attr("属性") |
② 设置属性语法
1 | attr("属性","属性值") |
jQuery 内容文本值
普通元素内容 html()
相当于原生 js 中的 innerHTML
1 | html() // 获取元素的内容 |
普通元素文本内容 text()
相当于原生 js 中的 innerText
1 | text() // 获取元素的内容 |
表单值 val()
相当于原生 js 中的 value
1 | val() // 获取元素的内容 |
遍历元素
隐式迭代:对同一类元素做相同操作。如果做不同操作,需要使用遍历:
1 | $("div").each(function (index, domEle) {xxx;}) |
创建元素
① 内部添加
1 | $("ul").append(li);//放到最后面,类似原生 appendChild |
② 外部添加
1 | el.before(内容); // 把内容放到目标元素前面 |
删除元素
1 | el.remove() // 删除匹配节点(本身) |
jQuery 事件
事件注册
单个事件注册
1 | element.事件(function); |
事件处理
事件处理 on() 绑定事件
- 语法规范
1 | on(events,[selector],[data],fn) |
概述
在选择元素上绑定一个或多个事件的事件处理函数。
on() 方法绑定事件处理程序到当前选定的 jQuery 对象中的元素。
显示参数
events:一个或多个用空格分隔的事件类型和可选的命名空间,如”click”或”keydown.myPlugin” 。
selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代。如果选择的< null或省略,当它到达选定的元素,事件总是触发。
data:当一个事件被触发时要传递event.data给事件处理函数。
fn:该事件被触发时执行的函数。 false 值也可以做一个函数的简写,返回false。
优势1
1 | // 同一对象不同操作不同回调 |
- 优势2
可以事件委派操作。事件委派的定义是:把原来子元素身上的事件绑定到父元素上,就是把事件委派给父元素。
1 | $("ul").on("click", "li", function(){ |
- 优势3
1 | 动态创建的元素,click() 没有办法绑定事件,on() 可以给动态生成元素绑定事件。 |
事件处理 off() 解绑事件
- 语法规范
1 | off(events,[selector],[fn]) |
概述
在选择元素上移除一个或多个事件的事件处理函数。
off() 方法移除用 on() 绑定的事件处理程序。
显示参数
events:一个或多个空格分隔的事件类型和可选的命名空间,或仅仅是命名空间,比如”click”, “keydown.myPlugin”, 或者 “.myPlugin”。
selector:一个最初传递到 .on() 事件处理程序附加的选择器。
fn:事件处理程序函数以前附加事件上,或特殊值 false。
事件处理 one() 绑定一次性事件
- 语法规范
1 | one(type,[data],fn) |
- 概述
- 为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。
- 显示参数
type
:添加到元素的一个或多个事件。由空格分隔多个事件。必须是有效的事件。data
:将要传递给事件处理函数的数据映射。fn
:每当事件触发时执行的函数。
事件对象
事件被触发,就会有事件对象的产生。
1 | on(events,[selector],function(even) { }) |