jQuery学习笔记(一)jQuery选择器
目录
第一次写博客,希望自己能够长期坚持,以写博客的方式作为总结与复习。
最近一段时间开始学习jQuery,通过写一个jQuery学习笔记的专题,对jQuery的知识做一个总结,并给出部分Demo来练习,使其能够掌握jQuery的基本技能。
今天所写的内容是关于jQuery选择器。
在学习jQuery选择器之前,有必要先了解一下css选择器,首先要明确一个新手容易混淆的概念:css选择器与jQuery选择器是两个不同的概念,正如DOM对象与jQuery对象(jQuery对象是通过jQuery包装DOM对象后所产生的的对象,无法使用DOM对象的任何方法)也是两个不同的概念。常用的css选择器有标签选择器、ID选择器、类选择器、群组选择器、后代选择器、通配选择器等。
jQuery选择器完全继承了CSS的风格,可以方便快捷的找出特定的DOM元素,然后为其添加行为。jQuery选择器与css选择器最大的不同就在于jQuery选择器是找到元素后为其添加行为,而css选择器则是找到元素后为其添加样式,但是jQuery选择器也可以操作css样式,并且更加灵活。这样一个HTML页由三部分构成,HTML中的标签负责网页的内容,css负责样式,jQuery(更确切的说应该是Javascript)负责其行为。
一. 下面谈谈关于jQuery选择器的优点
1.简洁的写法
在JS中,我们最常写的一个函数就是document.getElementById(),通过ID获取元素,而在jQuery中只需$("#Id")即可完成这一工作。
2.支持css1到css3的选择器
3.完善处理机制
即使是用jQuery选择器获取页面上不存在的元素也不会报错,这一点不同于js.
二.jQuery选择器中各类选择器
jQuery的选择器大体分为四大类:基本选择器、层次选择器、过滤选择器、表单选择器。作为初学者而言,恐怕一时难以掌握如此之多的选择器,个人认为,掌握基本选择器以及会一些过滤选择器即可胜任大部分我们需要的操作。何况很多选择器与CSS如此相像!下面就分别来介绍这四大类选择器,其中过滤选择器还细分了6类,都用了表格的方式,这样即使到了以后项目中需要的时候也可以直接查阅这些表格。
1.基本选择器(可以完成绝大多数的工作)
具体介绍及用法见表1。
表1 基本选择器
| 选择器 | 描述 | 返回 | 示例 |
| #id |
根据给定的id匹配一个元素 |
单个元素 | $("#test")选取id为test的元素 |
| .class |
根据给定的类名匹配元素 |
集合元素 | $(".test")选取所有class为test的元素 |
| element |
根据给定的元素名匹配元素 |
集合元素 | $("p")选取所有的<p>元素 |
| * |
匹配所有元素 |
集合元素 | $(*)选取所有元素 |
|
selector1,selector2, ...,selectorN |
将每一个选择器匹配到的元素 合并后一起返回 |
集合元素 |
$("div,span,p.myClass")选取所有<div> <span>和拥有myClass的<p>标签的一组 元素 |
2.层次选择器
即通过DOM元素之间的层次关系来获取指定的元素,具体介绍及用法见表2
表2 层次选择器
| 选择器 | 描述 | 返回 | 示例 |
| $("ancestor descendant") |
选取ancestor里的所有descendan 元素 |
集合元素 |
$("div span')选取<div>里的 所有<span>元素 |
| $("parent>child") | 选取parent元素下的child元素 | 集合元素 | $("div>span")选取<div>里的所有<span>子元素 |
| $("prev+next") | 选取紧接在prev元素后的next元素 | 单个元素 | $(".one+div")选取class为one的下个<div>同辈元素 |
| $("prev~siblings") | 选取prev元素之后的所有siblings元素 | 集合元素 |
$("#two~div")选取id为two的元素后面 所有<div>同辈元素 |
注意$("ancestor descendant")与$("parent>child")的区别:$("ancestor descendant")选取的是所有的后代元素,而$("parent>child")选取的只是其 parent 元素下的子元素(child元素)。
3.过滤选择器
过滤选择器主要是通过特定的过滤规则来筛选出所需的DOM元素,选择器都以(:)开头。
过滤选择器可以分为:基本过滤选择器、内容过滤选择器、可见性过滤选择器、属性过滤选择器、子元素过滤选择器、和表单对象属性过滤选择器。
3.1基本过滤选择器
具体用法见表3
表3 基本过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| :first | 选取第一个元素 | 单个元素 | $("div first")选取所有<div>元素中的第一个<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的元素 | 单个元素 | $("input:eq(0)")选取索引为0<input>元素 |
| :gt(indext) | 选取索引大于index的元素 | 集合元素 | $("input:gt(1)")选取索引大于1的<input>元素 |
| :lt(index) | 选取索引小于index的元素 | 集合元素 | $("input:lt(1)")选取索引小于1的<input>元素 |
| :header | 选取所有的标题元素 | 集合元素 | $(":header")选取所有的<h1><h2><h3>... |
| :animated | 选取当前正在执行动画的所有元素 | 集合元素 | $("div:animated")选取正在执行动画的<div>元素 |
| :focus | 选取当前获取焦点的元素 | 集合元素 | $(":focus")选取当前获得焦点的元素 |
3.2内容过滤选择器
具体用法见表4
表4 内容过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| :contains(text) | 选取文本内容为“text”的元素 | 集合元素 | $("div:contains('我')")选取含有文本“我”的<div>元素 |
| :empty | 选取不包含子元素或者文本的空元素 | 集合元素 | $("div:empty")选取不包含子元素的<div>空元素 |
| :has(selector) | 选取含有选择器所匹配的元素的元素 | 集合元素 | $("div:has(p)")选取含有<p>元素的<div>元素 |
| :parent | 选取含有子元素或者文本的元素 | 集合元素 | $("div:parent")选取拥有子元素或者文本的<div>元素 |
3.3可见性过滤选择器
可见性过滤选择器是根据元素的可见和不可见的状态来选择相应的元素。具体见表5.
表5 可见性过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| :hidden | 选取所有不可见的元素 | 集合元素 | $("input:hidden")选取所有不可见的<input> |
| :visible | 选取所有可见的元素 | 集合元素 | $("div:visible")选取所有可见的<div>元素 |
3.4属性过滤选择器
属性选择器的过滤规则是通过元素的属性来获取相应的元素,属性都用包含在[]中,并没有冒号。具体见表6.
表6 属性过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| [attribute] | 选取拥有此属性的元素 | 集合元素 | $("div[id]")选取拥有属性为id的<div>元素 |
| [attribute=value] | 选取属性值为value的元素 | 集合元素 | $("div[title=test]")选取属性title为“test”的<div>元素 |
| [attribute!=value] | 选取属性值不为value的元素 | 集合元素 |
$("div[title!=test]")选取属性title不为“test”的<div>元素,没有属性titl e的<div>元素也为被选取 |
| [attribute^=value] | 选取属性的值以value开始的元素 | 集合元素 | $("div[title^=test]")选取属性title以“test”开始的<div>元素 |
| [attribute$=value] | 选取属性的值以values结尾的元素 | 集合元素 | $("div[title$=test]")选取属性title以“value”结束的<div>元素 |
| [attribute*=value] | 选取属性的值含有value的元素 | 集合元素 | $("div[title*=test]")选取属性title中含有“title"的<div>元素 |
| [attribute|=value] |
选取属性等于给定字符串或以该字符为 前缀(该字符串后跟一个连字符"-")的元素 |
集合元素 |
$("div[title|='en']")选取属性title为"en"或者以“en”开头字符串的<div> 元素 |
| [attribute~=value] |
选取属性用空格分隔的值中包含一个给定值 的元素 |
集合元素 |
$("div[title~='uk']")选取属性title用空格分隔值中包含“uk”的<div> 元素 |
|
[attribute1][attribute] ...[attributeN] |
一个复合属性选择器,没选择一次,缩小一 次范围 |
集合元素 |
$("div[id][title$=test]")选取拥有属性id并且属性title以test结尾的 <div>元素 |
3.5 子元素过滤选择器
在用子元素过滤选择器时要弄清父元素与子元素的关系。具体用法见表7
表7 子元素过滤选择器
| 选择器 | 描返 | 返回 | 示例 |
|
:nth-child (index/eve/ odd/equation) |
选取每个父元素下的第index个 子元素或者奇偶元素(index从1开始) |
集合元素 |
:eq(index)只匹配一个元素,而:nth-child将为每一个 父元素匹配子元素,并且:nth-child(index)的index是从1开始, 而:eq(index)是从0开始。 |
|
:first-child |
选取每个父元素的第一个子元素 |
集合元素 |
:first只返回单个元素,而:first-child选择器将为每个父元素匹配 第一个子元素。 $("ul li:first-child")选取每一个ul中第一个<li>元素 |
| :last-child | 选取每个父元素的最后一个子元素 | 集合元素 | $("ul li:last-chilid")选取每一个ul中的最后一个<li>元素 |
| :only-child |
如果某个元素是它父元素中的唯一一个 子元素,那么它就会被匹配,如果父元 素中含有其他元素,那么将不会匹配 |
集合元素 | $("ul li:onyl-child")选取ul中是唯一子元素的<li>元素 |
3.6 表单对象属性过滤选择器
表单对象属性过滤选择器主要是针对表单元素中enabled、disabled、checked、selected等属性进行过滤。具体用法见表8
表8 表单对象属性过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| :enabled | 选取所有可用元素 | 集合元素 | $("#form1:enabled")选取id为"form1"的表单的所有可用元素 |
| :disabled | 选取所有不可用元素 | 集合元素 | $("#form2:disabled")选取id为"form2"的表单中的所有不可用的元素 |
| :checked | 选取所有被选中的元素(单选框,复选框) | 集合元素 | $("input:checked")选取所有被选中的<input>元素 |
| :seleted | 选取所有被选中的选项元素(下拉列表) | 集合元素 | $("select option:selected")选取所有被选中的选项元素 |
4.表单选择器
专门用于开发者获取表单中的某个或者某种类型的元素。对于用户的交互性有着很重要的影响。具体用法见表9.
表9 表单选择器
| 选择器 | 描述 | 返回 | 示例 |
| :input |
选取所有<input>、<textarea>、<select> 和<button>元素 |
集合元素 |
$(":input")选取所有<input>、<textarea>、 <select>和<button>元素 |
| :text |
选取所有的单行文本框 |
集合元素 |
$(":text")选取所有的单行文本框 |
| :password |
选取所有的密码框 |
集合元素 |
$(":password")选取所有的密码框 |
| :radio |
选取所有的单选框 |
集合元素 |
$(":radio")选取所有的单选框 |
| :checkbox |
选取所有的多选框 |
集合元素 |
$(":checkbox")选取所有的多选框 |
| :submit |
选取所有的提交按钮 |
集合元素 |
$(":submit")选取所有的提交按钮 |
| :image |
选取所有的图相按钮 |
集合元素 |
$(":image")选取所有的图相按钮 |
| :reset |
选取所有的重置按妞 |
集合元素 |
$(":reset")选取所有的重置按钮 |
| :button |
选取所有的按钮 |
集合元素 |
$(":button")选取所有的按钮 |
| :file |
选取所有的上传域 |
集合元素 |
$(":file")选取所有的上传域 |
| :hidden |
选取所有的不可见元素 |
集合元素 |
$(":hidden")选取所有的不可见元素 |
小结
此次学习笔记主要写了关于jQuery选择器,jQuery选择器是jQuery的基础,只有将jQuery选择器熟练掌握,才能掌握jQuery中DOM操作、以及对表单、表格的操作、在Ajax的应用等等。好了,也对于jQuery选择器总结的差不多了。从中午开始,写到晚上,感觉写博客果然也是一种总结提高的好方法,对之前很多陌生的jQuery选择器重新认识了一遍。
jQuery学习笔记(一)jQuery选择器的更多相关文章
- jQuery 学习笔记:jQuery 代码结构
jQuery 学习笔记:jQuery 代码结构 这是我学习 jQuery 过程中整理的笔记,这一部分主要包括 jQuery 的代码最外层的结构,写出来整理自己的学习成果,有错误欢迎指出. jQuery ...
- jQuery学习笔记之jQuery的Ajax(3)
jQuery学习笔记之jQuery的Ajax(3) 6.jQuery的Ajax插件 源码地址: https://github.com/iyun/jQueryDemo.git ------------- ...
- jquery学习笔记(一):选择器
内容来自[汇智网]jquery学习课程 1.1 基础选择器 选择器 功能 返回值 #id 根据给定的id匹配一个元素 单个元素 element 根据给定的元素名匹配所有元素 元素集合 .class 根 ...
- 锋利的jQuery学习笔记之jQuery选择器
在介绍jQuery选择器之前,先简单介绍一下CSS选择器---> 一.CSS选择器 常见的CSS选择器有以下几种: 选择器 语法 描述 示例 标签选择器 E{CSS规则} 以文档元素为选择符 t ...
- jQuery学习笔记(二)jQuery中DOM操作
目录 DOM操作分类 jQuery中的各种DOM操作 查找节点 创建节点 删除节点 复制节点 替换节点 包裹节点 属性操作 样式操作 对HTML.文本和值的操作 遍历节点 CSS-DOM操作 小结 本 ...
- jQuery学习笔记之jQuery.fn.init()的参数分析
这篇文章主要介绍了jQuery.fn.init()的参数分析,需要的朋友可以参考下 从return new jQuery.fn.init( selector, context, rootjQuer ...
- jQuery学习笔记(jquery.ui插件)
官网地址:http://ui.jquery.com/ jQuery UI源自于一jQuery插件-Interface.目前版本是1.10.3,需要jQuery 1.6以上版本支持. jQuery UI ...
- jQuery学习笔记(jquery.simplemodal插件)
官网地址:http://www.ericmmartin.com/ SimpleModal是一个轻量级的jQuery插件,它为模式窗口的开发提供了一个强有力的接口,可以把它当作模式窗口的框架.Simpl ...
- jQuery学习笔记(jquery.form插件)
官网: http://malsup.com/jquery/form/ jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Fo ...
随机推荐
- java 基础三 下雪
通过repaint()方法进行重画. import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; p ...
- LeetCode Minimum Moves to Equal Array Elements
原题链接在这里:https://leetcode.com/problems/minimum-moves-to-equal-array-elements/ 题目: Given a non-empty i ...
- QT 调试时出现 During startup program exited with code 0xc0000135 错误
我用的QT creator 5.70 出现上述原因是动态库加载不成功,但是QTcreator 不会提示什么动态库,具体缺乏什么动态库要用VS新建一个工程调用才可以看到,这也是QT Creator很大的 ...
- 使用jsonp跨域请求后可以获得数据,但是进入error方法,返回parseerror
$.ajax({ url:url, dataType:'jsonp', jsonp: 'callback',//回调函数名字 jsonpCallback: 'success_jsonpCallback ...
- Android 基于Android的手机邮件收发(JavaMail)之三(邮件接收)
初次做这个程序的时候,是仿照着网上别人的程序做的.因为本人比较菜,是一个新手,以前的基础知识没有学好,所以尽管有了别人的代码但是还是不知道怎么在界面上显示出它的效果来,废话不多少,现在就贴出我的参考程 ...
- C#异步方法的使用
from:http://www.myext.cn/csharp/a_6765.html 也许业内很多高不成低不就的程序员都会对一些知识点会有些迷惑,原因是平常工作用的少,所以也就决定了你对这个事物的了 ...
- SSIS 连接ORACLE 无法从 SQL 命令中提取参数的解决方案
第一步: 定义包变量:maxdate 类型为String 定义包变量:sqlStatement类型为String,值为:select * from i_out_serv_mon 第二步: 取&q ...
- leetcode 397
题目描述: Given a positive integer n and you can do operations as follow: If n is even, replace n with n ...
- Android 多媒体视频播放一( 多媒体理解与经验分享)
前言 说到android的多媒体,一把辛酸一把泪,当初听说会多媒体的比较牛掰,公司也有需求,于是乎我也积极的加入研究android多媒体的行列,记得以前刚接触的时候,最开始还是比较头大的,主要是但是很 ...
- 2-MySQL数据库编码uft-8
mysql> show variables like 'character%'; mysql> show variables like 'collation%'; mysql> st ...