共计 15545 个字符,预计需要花费 39 分钟才能阅读完成。
jQuery是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作。由约翰·雷西格(John Resig)在2006年1月的BarCamp NYC上发布第一个版本。目前是由Dave Methvin领导的开发团队进行开发。全球前10,000个访问最高的网站中,有65%使用了jQuery,是目前最受欢迎的JavaScript库。 —维基百科
使用jQuery
进入官方网站获取最新的版本https://jquery.com/download/
,这里需要注意jQuery分3个系列版本1.x与2.x主要的区别在于 2.x不再兼容IE6、7、8为移动端而优化,由于减少了一些代码,使得该版本比jQuery1.x更小且更快。
jQuery3.0提供了精简版,有很多人使用jQuery并不需要ajax模块和effects模块,而恰恰这两个模块是jQuery中最占体积的,所以jQuery官方发布了精简版的,gzipped压缩的版本仅仅6k,相对于完整版动辄好几十K的体积来说着实骨感了不少,加载速度也快了不少。
下载地址:https://code.jquery.com/jquery-3.0.0.slim.js
jQuery每一个系列版本分为:压缩版(compressed)与开发版(development),我们在开发过程中使用开发版(开发版本便于代码修改及调试),项目上线发布使用压缩版(因为压缩版本体积更小,效率更快)。
jQuery只是一个库,不需要特别的安装,只需要我们在页面<head>
标签内中通过script
标签脚本引入jQuery库即可。
|
|
打开之后如图
将jQuery对象转化成DOM对象
jQuery是一个类数组对象,DOM对象就是一个单独的DOM元素。
- 利用数组下标的方式读取到jQuery中的DOM对象
HTML代码
|
|
JavaScript代码
|
|
用jQuery找到所有的div元素(3个),因为jQuery 对象也是一个数组结构,可以通过数组下标索引找到第一个div元素,通过返回的div对象然后调用它style属性然修改第一个div元素的颜色。这里需要注意的一点是,数组的索引是从0开始的,也就是第一个元素下标是0
- 通过jQuery自带的get()方法
jQuery对象自身提供一个.get() 方法允许我们直接访问jQuery对象中相关的DOM节点,get方法中提供一个元素的索引:
|
|
DOM对象转化成jQuery对象
如果传递给$(DOM)函数的参数是一个DOM对象,jQuery方法会把这个DOM对象给包装成一个新的jQuery对象
HTML代码
|
|
JavaScript代码
|
|
通过getElementsByTagName获取到所有div节点的元素,结果是一个dom合集对象,不过这个对象是一个数组合集(3个div元素)。通过$(div)方法转化成jQuery对象,通过调用jQuery对象中的first与css方法查找第一个元素并且改变其颜色。
jQuery基本选择器
- id
ID选择器: 一个用来查找的ID,即元素的id属性
语法:
|
|
id选择器也是基本的选择器,jQuery内部使用JavaScript函数document.getElementById()
来处理ID的获取。原生语法的支持总是非常高效的,所以在操作DOM的获取上,如果能采用id的话尽然考虑用这个选择器
- element
元素选择器: 根据给定(html)标记名称选择所有的元素
语法:
|
|
- .class
类选择器: 顾名思义,通过class样式类名来获取节点
|
|
- *
全选择器: 匹配所有元素
语法:
|
|
- selector1,selector2,selectorN
将每一个选择器匹配到的元素合并后一起返回,你可以指定任意多个选择器,并将匹配到的元素合并到一个结果内。
语法:
|
|
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
jQuery层级选择器
文档中的所有的节点之间都是有这样或者那样的关系。我们可以把节点之间的关系可以用传统的家族关系来描述,可以把文档树当作一个家谱,那么节点与节点直接就会存在父子,兄弟,祖孙的关系了。
选择器中的层级选择器就是用来处理这种关系
- 子选择器
选择所有指定“parent”元素中指定的”child”的直接子元素。
语法:
|
|
- 后代选择器
选择给定的祖先元素的所有后代元素, 一个元素的后代可能是该元素的一个孩子,孙子,曾孙等
语法:
|
|
- 相邻兄弟选择器
选择所有紧接在“prev”元素后的“next”元素
语法:
|
|
- 一般兄弟选择器
匹配“prev”元素之后的所有 兄弟元素。具有相同的父元素,并匹配过滤“siblings”选择器
语法:
|
|
jQuery基本筛选器
jQuery提供了一系列的筛选选择器用来更快捷的找到所需的DOM元素。筛选选择器很多都不是CSS的规范,而是jQuery自己为了开发者的便利延展出来的选择器.
- 基本筛选器
选择器 | 描述 |
---|---|
$(':first'); |
获取匹配的第一个元素 |
$(':last'); |
获取匹配的最后个元素 |
$("input:not(:checked)"); |
去除所有给定选择器匹配的元素,例如查找所有未选中的input元素 |
$(":eq(number)"); |
匹配一个给定索引值的元素 |
$(":gt(number)"); |
匹配所有大于给定索引值的元素 |
$(":lt(number)"); |
匹配所有小于给定索引值的元素 |
$(":even"); |
匹配所有索引值为偶数的元素,从 0 开始计数 |
$(":odd"); |
匹配所有索引值为奇数的元素,从 0 开始计数 |
$(":header").css("background", "#EEE"); |
匹配如 h1, h2, h3之类的标题元素,例如:给页面内所有标题加上背景色 |
$("p:lang(it)"); |
选择指定语言的所有元素,例如:选择所有<P> 的语言属性: |
$(":root"); |
选择该文档的根元素,在HTML中,文档的根元素,和$(":root"); 选择的元素一样,永远是元素。 |
注意事项:
:eq()
,:lt()
,:gt()
,:even
,:odd
用来筛选他们前面的匹配表达式的集合元素,根据之前匹配的元素在进一步筛选,注意jQuery合集都是从0开始索引gt
是一个段落筛选,从指定索引的下一个开始,gt(1)
实际从2开始
jQuery内容筛选器
- :contains(text)
匹配包含给定文本的元素
实例:
查找所有包含"John"
的div元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
- :empty
匹配所有不包含子元素或者文本的空元素
实例:
查找所有不包含子元素或者文本的空元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
- :has(selector)
匹配含有选择器所匹配的元素的元素
实例:
给所有包含 p 元素的 div 元素添加一个 text 类
HTML代码:
|
|
jQuery 代码:
|
|
结果:
|
|
- :parent
匹配含有子元素或者文本的元素
实例:
查找所有含有子元素或者文本的td
元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
注意事项
:contains
与:has
都有查找的意思,但是contains查找包含”指定文本”的元素,has查找包含”指定元素”的元素- 如果
:contains
匹配的文本包含在元素的子元素中,同样认为是符合条件的 :parent
与:empty
是相反的,两者所涉及的子元素,包括文本节点
jQuery可见性选择器
元素有显示状态与隐藏状态,jQuery根据元素的状态扩展了可见性筛选选择器:visible
与:hidden
描述如下:
选择器 | 描述 |
---|---|
$(":visible"); |
选择所有的可见元素 |
$(":hidden"); |
选择所有不可见元素,或者type为hidden的元素 |
- visible示例
查找所有可见的 tr 元素
HTML 代码:
|
|
jQuery 代码:
|
|
结果:
|
|
- hidden示例
查找隐藏的 tr
|
HTML 代码:
|
jQuery 代码:
|
|
结果:
|
|
匹配type为hidden的元素
HTML 代码:
|
|
jQuery 代码:
|
|
结果:
|
|
jQuery属性选择器
属性选择器让你可以基于属性来定位一个元素。可以只指定该元素的某个属性,这样所有使用该属性而不管它的值,这个元素都将被定位,也可以更加明确并定位在这些属性上使用特定值的元素,这就是属性选择器展示它们的威力的地方。
描述如下:
选择器 | 描述 | |
---|---|---|
$(":[attribute]"); |
匹配包含给定属性的元素 | |
$(":[attribute=value]"); |
匹配给定的属性是某个特定值的元素 | |
$(":[attribute!=value]"); |
匹配所有不含有指定的属性,或者属性不等于特定值的元素。 | |
$(":[attribute^=value]"); |
匹配给定的属性是以某些值开始的元素 | |
$(":[attribute$=value]"); |
匹配给定的属性是以某些值结尾的元素 | |
$(":[attribute*=value]"); |
匹配给定的属性是以包含某些值的元素 | |
$(":[selector1][selector2][selectorN]"); |
复合属性选择器,需要同时满足多个条件时使用 | |
`$(“:[attribute | =value]”);` | 匹配指定属性等于指定值或以指定值为前缀的所有元素 |
$(":[attribute~=value]"); |
匹配指定属性的值中包含指定单词的所有元素 |
- 选择器示例
[attribute]
查找所有含有 id 属性的 div 元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
[attribute=value]
查找所有 name 属性是 newsletter 的 input 元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
[attribute!=value]
查找所有name属性不是newsletter的input元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
[attribute^=value]
查找所有name
以'news'
开始的input
元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
[attribute$=value]
查找所有name
以'letter'
结尾的input
元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
[attribute*=value]
查找所有name
包含'man'
的input
元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
[selector1][selector2][selectorN]
找到所有含有id
属性,并且它的name
属性是以man
结尾的
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
jQuery子元素选择器
子元素筛选选择器不常使用,其筛选规则比起其它的选择器稍微要复杂点
子元素筛选选择器描述表:
选择器 | 描述 | |||
---|---|---|---|---|
$(":first-child"); |
匹配第一个子元素 | |||
$(":last-child"); |
匹配最后一个子元素 | |||
$(":only-child"); |
如果某个元素是父元素中唯一的子元素,那将会被匹配 | |||
$(":nth-child"); |
匹配其父元素下的第N个子或奇偶元素 | |||
`$(“:nth-last-child(n | even | odd | formula)”);` | 选择所有他们父元素的第n个子元素。计数从最后一个元素开始到第一个 |
- nth-last-child参数
参数 | 说明 |
---|---|
n |
匹配子元素序号,必须为整数,注意从1开始而不是0 |
even |
匹配所有偶数元素 |
odd |
匹配所有奇数元素 |
formula |
使用特殊公式如(an + b)进行选择. 例如:nth-last-child(3n+2) 从倒数第二个子元素开始,匹配每个3的倍数的元素 |
- 示例
:first-child
在每个ul
中查找第一个li
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:last-child
在每个ul
中查找最后一个li
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:only-child
在ul
中查找是唯一子元素的li
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:nth-child
在每个ul
查找第2
个li
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:nth-last-child(n|even|odd|formula)
在每个匹配的ul中查找倒数第二个li
HTML代码
|
|
jQuery代码:
|
|
结果:
|
|
jQuery表单元素选择器
无论是提交还是传递数据,表单元素在动态交互页面的作用是非常重要的。jQuery中专门加入了表单选择器,从而能够极其方便地获取到某个类型的表单元素
选择器 | 描述 |
---|---|
$(":input"); |
匹配所有input,textarea,select和button元素 |
$(":text"); |
匹配所有的单行文本框 |
$(":password"); |
匹配所有密码框 |
$(":radio"); |
匹配所有单选按钮 |
$(":checkbox"); |
匹配所有复选框 |
$(":submit"); |
匹配所有提交按钮 |
$(":image"); |
匹配所有图像域 |
$(":reset"); |
匹配所有重置按钮 |
$(":button"); |
匹配所有按钮 |
$(":file"); |
匹配所有文件域 |
- 示例
:input
查找所有的input元素,下面这些元素都会被匹配到。
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:text
查找所有文本框
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:password
查找所有密码框
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:radio
查找所有单选按钮
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:checkbox
查找所有复选框
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:submit
查找所有提交按钮
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:image
匹配所有图像域
HTML代码:
|
|
jQuery 代码:
|
|
结果:
|
|
:reset
查找所有重置按钮
HTML代码:
|
|
jQuery 代码:
|
|
结果:
|
|
:button
查找所有按钮.
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:file
查找所有文件域
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
jQuery表单对象属性选择器
除了表单元素选择器外,表单对象属性筛选选择器也是专门针对表单元素的选择器,可以附加在其他选择器的后面,主要功能是对所选择的表单元素进行筛选
选择器 | 描述 |
---|---|
$(":enabled"); |
选取可用的表单元素 |
$(":disabled"); |
选取不可用的表单元素 |
$(":checked"); |
选取被选中的<input> 元素 |
$(":selected"); |
选取被选中的<option> 元素 |
- 示例
:enabled
查找所有可用的input元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:disabled
查找所有不可用的input元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:checked
查找所有选中的复选框元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
:selected
查找所有选中的选项元素
HTML代码:
|
|
jQuery代码:
|
|
结果:
|
|
jQuery特殊选择器this
以来内容来源于慕课网-特殊选择器this
相信很多刚接触jQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢?
this是JavaScript中的关键字,指的是当前的上下文对象,简单的说就是方法/属性的所有者
下面例子中,imooc是一个对象,拥有name属性与getName方法,在getName中this指向了所属的对象imooc
|
|
当然在JavaScript中this是动态的,也就是说这个上下文对象都是可以被动态改变的(可以通过call,apply等方法),具体的大家可以查阅相关资料
同样的在DOM中this就是指向了这个html元素对象,因为this就是DOM元素本身的一个引用
假如给页面一个P元素绑定一个事件:
|
|
通过addEventListener绑定的事件回调中,this指向的是当前的dom对象,所以再次修改这样对象的样式,只需要通过this获取到引用即可
|
|
但是这样的操作其实还是很不方便的,这里面就要涉及一大堆的样式兼容,如果通过jQuery处理就会简单多了,我们只需要把this加工成jQuery对象
换成jQuery的做法:
|
|
通过把$()方法传入当前的元素对象的引用this,把这个this加工成jQuery对象,我们就可以用jQuery提供的快捷方法直接处理样式了
总结:
this
,表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性和方法。$(this)
,代表的上下文对象是一个jquery的上下文对象,可以调用jQuery的方法和属性值。