第三章:JavaScript选择元素

我们使用jQuery时,很常用的套路是“两步”
第一步:选取元素
第二步:对选中的元素执行需要的操作
这一章我们重点研究第一步,如何使用jQuery选取元素以及对选取的结果进行“各种筛选”以满足我们的需求。

一、jQuery中的选择器
1、选择器
什么是选择器?怎么用
选择器就是我们在使用CSS的时候那些用于“选择”元素用的写在{}之前的部分!
在jQuery中要选择元素,你只需要把选择器以字符串形式传递给$函数即可,返回的结果是一个jQuery对象!
jQuery支持的选择器相当强大,我们在CSS里面使用的选择器,在jQuery里面都可以使用,为了满足更复杂的需求jQuery还扩充了
一些选择器,下面我们来系统的学习一下jQuery中的选择器!
1)核心选择器(应用最广泛的选择器)
* 选择所有元素
元素 选择特定类型的元素
.类名 选择具有特定class的元素
元素.类名 选择具有特定class的某类元素
#id名 选择具有特定id属性值的元素
2)属性选择器(根据元素的属性来选择元素)
[attr] 选取定义了attr属性的元素,即使这个属性没有值
[attr="val"] 选取attr属性值等于字符串val的元素
[attr^="val"] 选取attr属性值以字符串val开头的元素
[attr$="val"] 选取attr属性值以字符串val结尾的元素
[attr*="val"] 选取attr属性值包含字符串val的元素
[attr~="val"] 选取attr属性其中一个值是字符串val的元素
[attr|="val"] 选取attr属性值等于字符串val,或属性值为连字符分隔的值列表且第一个值是字符串val的元素
[selector1][selector2][selectorN] 复合属性选择器,需要同时满足多个条件时使用
属性选择器可以配合其他选择器使用!
3)关系选择器
<selector1> <selector2> 在给定的祖先元素下匹配所有的后代元素
<selector1> > <selector2> 在给定的父元素下匹配所有的子元素
<selector1> + <selector2> 匹配所有紧接在 <selector1> 元素后的 <selector2>
<selector1> ~ <selector2> 匹配 所有在<selector1> 元素之后的所有同辈 <selector2> 元素
4)伪元素和伪类选择器
:checked 用于表单,匹配所有被选中元素(复选框、单选框等,不包括select中的option)
:disabled 用于表单,匹配所有不可用元素
:enabled 用于表单,匹配所有可用元素
:focus 主要用于表单,选取得到焦点的元素
:required 用于表单,选取具有required属性的元素
:optional 用于表单,选取缺少required属性的元素
:empty 匹配所有既不包含子元素也不包含文本的空元素
:first-child 选取第一个子元素
:last-child 选取最后一个子元素
:nth-child(n) 选取元素的第n个子元素(从1开始计数)
n可为even或odd
:nth-last-child(n) 选取元素的倒数第n个子元素
:nth-of-type(n) 选择同属于一个父元素之下,并且标签名相同的元素中的第n个(注:从1开始计数)
:nth-last-of-type(n) 选择同属于一个父元素之下,并且标签名相同的元素中的倒数第n个
:only-child 如果某个元素是父元素中唯一的子元素,那将会被匹配
:only-of-type 选择所有没有兄弟元素,且具有相同的元素名称的元素
:root 选取文档的根元素,在html文档中即是<html>元素
等等....
5)联合选择器和反选择器
通过对选择器的合理安排,我们几乎能达成任何目标。我们还可以利用选择器组合实现联合选择和反选择
<selector>,<selector>,<selector>.. 选取匹配第一个选择器的元素和匹配第二个选择器的元素
:not(selector) 选取不匹配指定选择器的元素
6)jQuery扩充的选择器
上面是css中本身就提供的选择器,为了满足更复杂的需求,jQuery还额外的支持一些选择器,这些选择器不但给我们带来方便,还能
实现更细的控制。
:animated 匹配所有正在执行动画效果的元素
:contains(text) 如果元素内或者后代元素内包含指定的文本即被选中
:eq(n) 选择第n个元素(从0开始计数)
:first 选择第一个匹配的元素
:last 选择最后一个匹配的元素
:lt(n) 选择序号小于n的所有元素(从0开始计数)
:gt(n) 选择序号大于n的所有元素(从0开始计数)
:odd 选择所有奇数元素(从0开始计数)
:even 选择所有的偶数元素(从0开始计数)
:has(选择器) 匹配包含 选择器所匹配的元素的元素
:text 用于表单,匹配所有的单行文本框
:button 匹配所有按钮(input标签type为button以及<button>标签)
:checkbox 用于表单,选择所有的复选框(匹配所有复选框)
:file 用于表单,选择所有的文件上传输入框
:input 用于表单,选择所有的input元素(匹配所有 input, textarea, select 和 button 元素)
:password 用于表单,选择所有的密码输入框
:radio 用于表单,选择所有的单选框
:submit 用于表单,选择所有的表单提交按钮
:image 用于表单,匹配所有图像域
:reset 用于表单,选择所有的表单重置按钮
:selected 用于表单,匹配所有选中的option元素
:header 匹配如 h1, h2, h3之类的标题元素
:hidden 选择所有的被隐藏文件
:visible 选择所有的可见元素
:parent 匹配含有子元素或者文本的元素
选择器可以单独使用,也可以配合其他选择器使用!
7)限制搜索的范围
默认情况下jQuery是在整个页面中搜索元素,多给$函数提供一个参数,我们便能够限制搜索的范围。
$(选择器,$(选择器))
2、理解选择结果
使用$函数选择元素返回的是一个对象,我们可以称这个对象为jQuery对象(就是一种叫法),我们在jQuery执行一些操作的时候很多情况
下都是返回的jQuery对象,下面我们来看一下jQuery对象里面的一些成员(还有很多成员我们后面慢慢讲,这边只列出部分)。
1)each(function)
在每个元素上运行给定的function
遍历jQuery对象中的所有元素,传个一个函数
jQuery对象中有多少个元素,传入的函数就会自动的调用多少次!
调用这个函数时,会传入当前这个元素在 jQuery对象中的序号!我们使用一个参数即可获取!
在函数内部this代表当前的html元素对象!
返回 ‘false‘ 将停止循环 (就像在普通的循环中使用 ‘break‘)。
返回 ‘true‘ 跳至下一个循环(就像在普通的循环中使用‘continue‘)
2)get(index)
返回给定索引值(index)对应的HTMLElement对象
3)length
返回jQuery对象中包含元素的个数
4)selector 返回选择器
5)size()
返回jQuery对象中包含元素的个数
6)toArray() 返回一个jQuery对象中包含的元素构成的HTMLElement对象数组

jQuery对象内包含大量有用的方法以及属性,我们这边暂时只介绍这几个
目的就是让大家感受一下即可!
问题思考:
1)jQuery对象怎么得到普通HTMLElement对象
get(index)、toArray()
2)怎么由DOM对象生成jQuery对象
$(DOM对象)
3)迭代处理jQuery对象内含的DOM对象
each(function)
3、方便之处-修改多个元素
几乎jQuery对象的内部的所有方法都是直接修改内部含的全部元素
$("div").css(‘background‘,‘pink‘);
4、方便之处-链式方法调用
jQuery对象另一个优雅之处在于它灵活的API比如:
调用一个方法修改jQuery内元素的内容,这个方法的返回结果依然是一个jQuery对象。
二、向jQuery对象中添加更多元素
1、add方法
*注意点:add方法不会改变原来的jQuery对象,而是返回新的jQuery对象
向jQuery对象中添加更多的元素主要就是使用jQuery对象中的add方法!
add(选择器)、add(选择器,上下文) 把匹配选择器的所有元素添加到调用add方法的jQuery对象中
add(HTMLElement)、add(HTMLElement[]) 把一个或一组HTMLElement添加到jQuery对象
add(jQuery对象) 把参数jQuery对象中的元素添加到当前jQuery对象

三、对结果集进行筛选
*注意点:这些操作不会改变原来的jQuery对象,而是返回新的jQuery对象
1、从结果集中获取某个元素
1)first()方法
得到第一个元素
2)last()方法
得到最后一个元素
3)eq(index)方法
得到第index个元素
当index为正值时,从第一个元素开始计数,为负数时则从jQuery中的最后一个元素开始计数
2、获取元素子集
slice()方法用来获取特定一组子元素
slice(从第几个开始,结束的位置)如果不提供第二个参数则从第一个参数一直获取到元素集合的末尾
3、过滤元素
1)使用filter方法可以将所有 不满足 某个指定条件的元素剔除
filter(selector) 得到匹配选择器的元素
filter(HTMLElement) 得到参数对应的元素
filter(jQuery) 得到原始集合与参数jQuery对象所含元素集合的交集
filter(function(index))
每一个元素调用一次参数函数,若某个元素调用参数函数的返回值为false,就剔除该元素
它接受一个参数index,这是元素在jQuery集合的索引。在函数内, this指的是当前的DOM元素。

原来的jQuery对象里面含有多少个元素,传入的函数就会被执行多少次!
如果函数返回的是true,那么对于的元素就留下来
如果函数返回的false,或者不返回 那么对于的元素就剔除!
this
2)not方法与filter方法正好相反
not(选择器) 删除匹配选择器的元素
not(HTMLElement[])、not(HTMLElement) 删除指定的元素或者元素集合
not(jQuery) 删除原始集合与参数jQuery对象所含元素集合的交集
not(function(index)) 每个元素调用一次参数函数
4、基于后代元素过滤结果集
我们可以使用has方法指定一个选择器、一个或多个HTMLElement对象为参数,从而得到拥有指定后代的元素
保留包含特定后代的元素,去掉那些不含有指定后代的元素

has方法
如果jQuery对象中的元素里面含有匹配的后代元素,那么对应的元素就留下来!
一个选择器、
一个或多个HTMLElement对象为参数
四、检测结果集
1、使用is()方法
如果元素内部有符合传入选择器的元素那么返回的就是true否则返回的就是false

使用is方法确定jQuery对象中的某个或某些元素是否满足测试条件
is(选择器) 如果结果含有匹配选择器的元素则返回true
is(HTMLElement[])、is(HTMLElement) 如果结果集中包含指定的HTMLElement或者至少含有指定HTMLElement[]中的一个元素,返回true
is(jQuery) 如果结果集中至少包含一个参数对象中的元素,返回true
is(function(index))
如果有一任意次参数函数返回true,则返回true
函数用来作为测试元素的集合。它接受一个参数index,这是元素在jQuery集合的索引。
在函数内, this指的是当前的DOM元素。
五、根据现有结果集得到另一个结果集
1、获取后代元素
1)children()
不传参数:得到结果集内所有元素的子元素
传入选择器:得到结果集内 元素的匹配传入选择器的子元素
2)find()
传入选择器:得到匹配选择器的后代元素
传入jQuery、HTMLElement、HTMLElement[]
得到结果集内所有元素的后代元素与参数对象对应元素的交集
2、获取祖先元素
1)offsetParent()
返回祖先元素中第一个其position设为relative或者absolute的元素。
此方法仅对可见元素有效
2)parent()
取得结果集内元素的父元素
可以通过一个可选的选择器进行筛选
3)parents()
取得结果集内元素的祖先元素,可以通过一个可选的选择器进行筛选。
4)parentsUntil()
查找当前元素的所有的祖先元素,直到(但不包括)遇到匹配的那个元素才停止
第一个传入参数:html元素对象,jQuery对象,选择器
第二个传入参数(可选):选择器(对结果进行筛选)
3、获取兄弟元素
1)next()
取得一个包含匹配的元素集合中每一个元素紧邻的下一个同辈元素的元素集合
可以传入选择器进行筛选
2)nextAll()
查找当前元素之后所有的同辈元素
可以传入选择器进行筛选
3)nextUntil()
查找当前元素之后所有的同辈元素,直到(但不包括)遇到匹配的那个元素才停止。
第一个传入参数:DOMElement,jQuery对象,选择器
第二个传入参数(可选):选择器(对结果进行筛选)
4)prev()
取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合
可以传入选择器进行筛选
5)prevAll()
查找当前元素之前所有的同辈元素
可以传入选择器进行筛选
6)prevUntil()
查找当前元素之前所有的同辈元素,直到(但不包括)遇到匹配的那个元素才停止
第一个传入参数:DOMElement,jQuery对象,选择器
第二个传入参数(可选):选择器(对结果进行筛选)
7)siblings()
取得一个包含匹配的元素集合中每一个元素的所有同辈元素的元素集合
可以传入选择器进行筛选
六、修改、回退结果集
1、end()方法
使用end方法得到上一个结果集
2、addBack()方法
使用addBack()可以得到原结果集与当前结果的合集,也可传入选择器来过滤原结果集

原文地址:https://www.cnblogs.com/seeding/p/11774972.html

时间: 2024-09-30 21:11:32

第三章:JavaScript选择元素的相关文章

第三章 javaScript数据类型

目录: 一.javaScript的一些特点和约定 二.基本数据类型 三.复杂数据类型 四.基本数据类型转换 五.typeof()函数 一.javaScript的一些特点和约定: 1.javaScript区分大小写. 2.变量.函数.属性.参数的名字第一个字符必须是一个字母.下划线(_)或者美元符号($).其他字符可以是字母.下划线.数字或美元符号. 3.javaScript标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写,如:javaScript. 4.在代码顶部添加"

第三章if选择结构

if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10;    if(a > 1){ System.out.println("内容");    } if(){   // 代码块 }else{   // 代码块 } eg: if(score >= 90){ System.out.println("奖励Mp4一个"); }else{ System.out.println("枪毙"); } 语法: if(

第三章 if选择结构

if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容"); } if(){ // 代码块}else{ // 代码块}eg:if(score >= 90){ System.out.println("奖励Mp4一个");}else{ System.out.println("枪毙");} 语法:if(条件){ // 代码块}else

Python自学:第三章 访问列表元素

#输出并首字母大写 bicycles = ['trek','cannondale','redline','specialized'] print(bicycles[0].title()) 输出为: Trek 原文地址:https://www.cnblogs.com/zhouxiin/p/10721308.html

jquery基础教程 - 第二章 选择元素

内容提要 1.网页中元素的介绍 2.如何通过CSS选择符在页面中查找元素 3.扩展jquery标准的CSS选择符 4.让选择页面元素更灵活的DOM遍历方法 本章重点:让我们能够在DOM中快捷而又轻松地获取元素或元素的集合 1.网页中元素介绍 1.1理解DOM -- JQUERY最大的特性之一就是它能够简化在DOM中选择元素的任务, DOM 充当网页和javascript之间的接口,它以对象网络而非纯文本的形式来表现html的代码 <html>是网页中的祖先元素: 搞清楚子元素,父元素,同辈元素

JavaScript高级程序设计(第3版)第三章读书笔记

第三章  基本概念 ECMAScript中的一切(变量.函数名和操作符)都区分大小写. 标识符是指变量.函数.属性的名字,或者函数的参数. 标识符的组成规则是:第一个字符必须是一个字母.下划线(_)或一个美元符号($):其他字符可以是字母.下划线.美元符号或数字. ECMAScript标识符采用驼峰大小写格式. ECMAScript注释包括单行注释(//)和块级注释(/*  *  */). ECMAScript 5引入了严格模式的概念,严格模式是为JavaScript定义了一种不同的解析与执行模

【javascript高级程序设计笔记】第一章与第三章

第1章 javascript简介 1.2Javascript实现 一个完整的javascript实现由下列三个不同的部分组成 核心(ECMAScript) 提供核心语言功能 文档对象模型(DOM) 提供访问和操作网页内容的方法和接口 浏览器对象模型(BOM)提供与浏览器交互的方法和接口 ECMAScript 它规定了这门语言的下列组成部分: 语法  类型  语句  关键字 保留字 操作符 对象 ECMA-262第5版,发布于2009年. 文档对象模型(DOM) Document Object M

JavaScript学习笔记(第一章——第三章)

说明 参考资料:<JavaScript高级程序设计(第3版)> 笔记主要为<JavaScript高级程序设计(第3版)>读书记录,按照此书的章节学习记录.方便以后查询复习(PS:正版书99大洋,没舍得买.在淘宝46买了一本盗版的并带一本 <JavaScript DOM编程艺术(第2版)>).两本书同时阅读,但以<JavaScript高级程序设计(第3版)>为主要学习路线.重要说明性内容将以近似书中原文摘出(以免出现个人解释歧义),外加自己遇到特殊情况说明(不

Javascript通过className选择元素

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <he