【前端】jQuer选择器小结

1 摘要

工欲善其事必先利其器,要想用好jQuery,就要做好自己的基本功。本篇博客对于jQuery中的选择器进行了一个小结,对于基本选择器、层次选择器、过滤选择器和表单选择器进行了分别列表和解释。

2 什么是jQuery选择器

顾名思义,选择器即选择某个对象或事物的器具。而jQuery选择器的操作对象则是DOM树的某个元素,例如HTML元素中的某个div块、button按钮和a链接,当然也可以是其中的document和window对象。一般我们要做页面效果、事件之前,提前要做的就是选择对应的的操作对象,而这个任务就交由jQuery选择器来完成。

3 为什么要用jQuery选择器

原生Javascript中一般要想获取DOM树中某个元素,只能通过DOM元素的id属性或者标签名字来获取该元素。也就是通过getElementById()getElementsByTagName()这两个函数来获取。

而jQuery对于这两种方式进行封装,简化为$("#id")$("tagName"),其中id和tagName分别是元素的id属性和标签名字。显而易见,jQuery相比原生Javascript更加简洁,而且还能避免某些错误。

当然,强大的jQuery是不会满足这两种方式来获取DOM元素,jQuery还支持class选择,层次选择,属性选择等等。下面将详细介绍如何使用jQuery选择器。

4 如何使用jQuery选择器

jQuery选择器分为基本选择器、层次选择器、过滤选择器和表单选择器。下面将所有选择器列入表格内,对于简单易懂的选择器将一带而过,对于复杂的选择器则重点解释介绍。

4.1 基本选择器

表4-1 基本选择器

选择器描述返回示例
#id根据给定的id匹配一个元素单个元素$("#test")选取 id 为 test 的元素
.class根据给定的类名匹配元素集合元素$(".test")选取所有 class 为 test 的元素
element根据给定的元素名匹配元素集合元素$("p")选取所有的<p>元素
  • | 匹配所有元素 | 集合元素 | $("*")选取所有的元素
    selector1, selector2, …, selectorN | 将每一个选择器匹配到的元素合并后一起返回 | 集合元素 | $("div,span,p.myClass")选取所有<div><span>和拥有 class 为 myClass 的<p>标签的一组元素

4.2 层次选择器

表4-2 层次选择器

选择器描述返回示例
$(“ancestor descendant”)选取 ancestor 元素里的所有 descendant (后代)元素集合元素$("div span")选取<div>里的所有的<span>元素
$(“parent>child”)选取 parent 元素下的 child (子)元素,与$("ancestor descendant")有区别,$("ancestor descendant")选择的是后代元素,$("parent>child")选择的是直属子元素,仅一代。集合元素$("div > span")选取<div>元素下元素名是<span>的子元素
$(“prev + next”)选取紧接在 prev 元素后的 next 元素集合元素$(".one + div")选取 class 为 one 的下一个<div>同辈元素
$(“prev ~ siblings”)选取 prev 元素之后的所有 siblings 元素集合元素$("#two ~ div")选取id为 two 的元素后面的所有 <div> 同辈元素

解释:$("prev + next") 选取的是所有 prev 元素后的 第一个 next 元素。$("prev ~ siblings")选取的是所有 prev 元素后的所有的 siblings 元素。

4.3 过滤选择器

4.3.1 基本过滤选择器

表4-3 基本过滤选择器

选择器描述返回示例
:first选取第 1 个元素单个元素$("div:first")选取所有<div>元素中第 1 个<div>元素
:last选取最后一个元素单个元素$("div:last")选取所有<div>元素中最后一个<div>元素
:not(selector)去除所有与给定选择器匹配的元素集合元素$("input:not(.myClass)")选取 class 不是 myClass 的<input>元素
:even选取索引是偶数的所有元素,索引从 0 开始集合元素$("input:even")选取索引是偶数的<input>元素
:odd选取索引是奇数的所有元素,索引从 0 开始集合元素$("input:odd")选取索引是奇数的<input>元素
:eq(index)选取索引等于 index 的元素(index 从 0 开始)集合元素$("input:eq(1)")选取索引等于 1 的<input>元素
:gt(index)选取索引大于 index 的元素(index 从 0 开始)集合元素$("input:eq(1)")选取索引大于 1 的<input>元素
:lt(index)选取索引小于 index 的元素(index 从 0 开始)集合元素$("input:eq(1)")选取索引小于 1 的<input>元素
:header选取所有的标题元素, 例如h1,h2,h3等等集合元素$(":header")选取网页中所有的<h1><h2><h3>
:animated选取当前正在执行动画的所有元素集合元素$("div:animated")选取正在执行动画的<div>元素
:focus选取当前获取焦点的元素集合元素$(":focus")选取当前获取焦点的元素

4.3.2 内容过滤选择器

表4-3 内容过滤选择器

选择器描述返回示例
:contains(text)选取含有文本内容为“text”的元素集合元素$("div:contains('我')")选取含有文本“我”的<div>元素
:empty选取不包含子元素或者文本的空元素集合元素$("div:empty")选取不包含子元素(包括文本元素)的<div>空元素
:has(selector)选取含有选择器所匹配的元素的元素$("div:has(p)")选取含有<p>元素的<div>元素
:parent选取含有子元素或者文本的元素集合元素$("div:parent")选取拥有子元素(包括文本元素)的<div>元素

4.3.3 可见性过滤选择器

表4-3 可见性过滤选择器

选择器描述返回示例
:hidden选取所有不可见的元素集合元素$(":hidden")选取所有不可见的元素。包括<input type="hidden"/><div style="display: none;"><div style="visibility: hidden;">等元素。如果只想选取<input>元素,可以使用$("input:hidden")
:visible选取所有可见元素集合元素$("div:visible")选取所有可见的<div>元素

4.3.4 属性过滤选择器

表4-4 属性过滤选择器

选择器描述返回示例
[attribute]选取拥有此属性的元素集合元素$("div[id]")选取拥有属性id的元素
[attribute=value]选取属性的值为 value 的元素集合元素$("div[title=test]")选取属性 title 为“test”的<div>元素
[attribute!=value]选取属性的值不等于 value 的元素集合元素$("div[title!=test]")选取属性 title 不等于“test”的<div>元素(注意:没有属性 title 的<div>元素也会被选取)
[attribute^=value]选取属性的值以 value 开始的元素集合元素$("div[title^=test]")选取属性 title 以“test”开始的<div>元素
[attribute$=value]选取属性的值以 value 结束的元素集合元素$("div[title$=test]")选取属性 title 以“test”结束的<div>元素
[attribute*=value]选取属性的值含有 value 的元素集合元素$("div[title*=test]")选取属性 title 含有“test”的<div>元素
[attribute|=value]选取属性等于给定字符串或以该字符串为前缀(该字符串后跟一个连字符“-”)的元素集合元素$("div[title|='en']")选取属性 title 等于 en 或以 en 为前缀(该字符串后跟一个连字符“-”)的元素
[attribute~=value]选取属性用空格分隔的值中包含给定值 value 的元素集合元素$("div[title~='uk']")选取属性 title 用空格分隔的值中包含字符 uk 的元素
[attribte1][attribte2][attribteN]用属性选择器合并成一个符合属性选择器,满足多个条件。每选择一次,缩小一次范围集合元素$("div[id][title$='test']")选取拥有属性 id ,并且属性 title 以“test”结束的<div>元素

4.3.5 子元素过滤选择器

表4-5 子元素过滤选择器

选择器描述返回示例
:nth-child(index/even/odd/equation)选取每个父元素下的第 index 个子元素或则奇偶元素。( index 从 1 算起)集合元素:eq(index)值匹配一个元素,而 :nth-child 将为每一个父元素匹配子元素,并且 :nth-child(index) 的 index 是从 1 开始的,而 :eq(index) 是从 0 算起的
:first-child选取每个父元素的第 1 个子元素集合元素:first 只返回单个元素,而 :first-child 选择符将为每个父元素匹配第 1 个子元素。例如$("ul li:first-child");选择每个<ul>中第 1 个<li>元素
:last-child选取每个父元素的最后一个子元素集合元素同样 :last 只返回单个元素,而 :last-child 选择符将为每个父元素匹配最后一个子元素。例如$("ul li:last-child");选择每个<ul>中最后一个<li>元素
:only-child如果某个元素是它父元素中唯一的子元素,那么将会被匹配。如果父元素中含有其他元素,则不会被匹配集合元素$("ul li:only-child")<ul>中选取是唯一子元素的<li>元素

4.3.6 表单对象属性过滤选择器

表4-6 表单对象属性过滤选择器

选择器描述返回示例
:enabled选取所有可用元素集合元素$("#form1 :enabled")选取 id 为“form1”的表单内的所有可用元素
:disabled选取所有不可用元素集合元素$("form2 :disabled")选取 id 为“form2”的表单内的所有不可用元素
:checked选取所有被选中的元素(单选框,复选框)集合元素$("input:checked")选取所有被选中的<input>元素
:selected选取所有被选中的选项元素(下拉列表)集合元素$("select option:selected")选取所有被选中的选项元素

4.4 表单选择器

表4-7 表单对象属性过滤选择器

选择器描述返回示例
:input选取所有的<input><textarea><select><button>元素集合元素$(":input")选取所有<input><textarea><select><button>元素
:text选取所有的单行文本框集合元素$(":text")选取所有的单行文本框
:password选取所有的密码框集合元素$(":password")选取所有的密码框
:radio选取所有的单选框集合元素$(":radio")选取所有的单选框
:checkbox选取所有的多选框集合元素$(":checkbox")选取所有的多选框
:submit选取所有的提交按钮集合元素$(":submit")选取所有的提交按钮
:image选取所有的图像按钮集合元素$(":image")选取所有的图像按钮
:reset选取所有的重置按钮集合元素$(":text")选取所有的重置按钮
:button选取所有的按钮集合元素$(":button")选取所有的按钮
:file选取所有的上传域集合元素$(":file")选取所有的上传域
:hidden选取所有的不可见元素集合元素$(":hidden")选取所有的不可见元素

参考文献

  • 《锋利的jQuery》(第2版) 单东林 张晓菲 魏然 编著
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
书名:jQuery权威指南(系统介绍jQuery方方面面,囊括118个实例和2个综合案例,实战性强) 作者:陶国荣 著 书号:978-7-111-32543-7 定价:59.00元 出版社:机械工业出版社华章公司 出版时间:2011年1月 编辑推荐: 内容全面,系统地讲解了jQuery方方面面 实战性强,囊括118个实例和2个综合案例 资深专家亲自执笔,4大专业社区一致鼎力推荐 内容简介: jQuery是继Prototype之后的又一个优秀JavaScript框架,深受全球开发者欢迎,已经成为Web开发领域的事实标准。jQuery以其轻巧的体积、强大的选择器、出色的DOM封装、丰富的插件支持使得广大的Web前端开发者得心应手,极大地提高了他们的开发效率;此外,jQuery中完善的Ajax功能、行为与结构层的分离、可靠的事件处理机制也同样使得Web后端开发者如虎添翼,使用少量代码就可以实现复杂的功能。特别是新版本1.4.x的发布,jQuery在功能和性能方面都有质的提升,极大地满足了广大开发者提出的更高要求。因此,为了提高Web开发的效率和强化Web应用的功能,熟练使用jQuery是Web开发者必备的一种能力。 《jQuery权威指南》由国内资深Web技术专家亲自执笔,4大Web开发社区一致鼎力推荐,权威性毋庸置疑。 内容新颖,基于jQuery的最新版本撰写,所有新功能和新特性一览无余;内容全面,不仅讲解了jQuery技术本身的方方面面,而且还包括与jQuery相关的扩展知识;实战性强,不仅每个知识点都配有完整的小案例,而且还有两个综合性的案例。本书不仅能满足读者系统学习理论知识的需求,还能满足需要充分实践的需求。 全书一共分为11章,首先以示例的方式对jQuery做了全局性的介绍,以便于为读者建立jQuery的大局观,这对初学者尤为重要;其次详细讲解了jQuery的各种选择器jQuery操作DOM的方法、jQuery中的事件与应用、jQuery中的动画和特效、Ajax在jQuery中的应用,以及各种常用的jQuery插件的使用方法和技巧,所有这些知识点都配有完整的示例(包括需求分析、代码实现和结果展示三部分);再接着对jQuery UI和jQuery实用工具函数等扩展知识,以及jQuery的开发技巧与性能优化等方面的重要知识做了详尽的阐述;最后以两个具有代表性的综合案例结束全书,希望能帮助读者将前面所学的理论知识真正贯穿于实践中,迅速进入jQuery的殿堂。 作者简介: 陶国荣,资深Web技术专家,有10余年开发经验,是国内较早专业从事Web开发的一线技术人员和培训讲师。醉心于对JavaScript、jQuery和Ajax等Web开发技术的研究与实践,并长期专注于HTML页面的优化与用户体验的研究,在页面框架搭建、数据流向分析、页面静态优化方面拥有丰富的实践经验。此外,他还是微软技术方面的专家,精通C#、ASP.NET 和SQL Server等技术,出版相关著作多部。 媒体推荐: jQuery的发展之迅速和取得的成功之巨大是其他所有开发框架都难以企及的,它已经成为Web开发者必备的核心技能之一。如果你尚未掌握jQuery或功力还不够,推荐你认真阅读这本书并付诸实践,与同类的jQuery图书相比,它有3大优势:内容非常全面,几乎包含jQuery的所有内容;基于jQuery的最新版本撰写,所有新功能特性一览无余;实战性极强,不仅有118个小型案例,而且还有两个综合案例。——jQuery中文社区 jQuery因为使用简单、功能强大、插件丰富而深受Web开发者青睐。《jQuery权威指南》不仅完整地呈现了jQuery本身所有的功能,而且讲解了jQuery UI等扩展功能;更值得一提的是,还包括最佳实践和性能优化方面的技巧,内容全面,结构合理。除此之外,本书还包括大量的实例,不仅每个知识点都配有小例子,而且还有两个综合性的案例。对于初学者而言,本书应该是学习jQuery的首选。——jQuery中文用户组 jQuery因为易于使用和功能强大著称,是所有Web开发者应该掌握的一种利器,初学者如何才能快速而有效地掌握jQuery呢?最好的方法莫过于一边学习理论,一边动手实践这些理论,本书就是按照这种思路为读者打造的,强烈推荐。——JavaScript开发者社区 jQuery从众多的Ajax框架中脱颖而出,已经成为Web开发领域的事实标准。《jQuery权威指南》除了理论知识丰富而全面外,它还有一个最大的特点就是注重实战,每个知识点都有一个完整的案例,包括需求分析、代码实现和结果展示三个部分,而且还包含两个综合性的案例,它的实践性之强是目前所有同类书都不具备的,恰好这一点又是初学者最需要的。如果能阅读本书并付诸实践,进入jQu

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路易斯·李

点个赞再走呗 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值