JQuery选择器和DOM操作
JQuery的选择器和DOM操作是其最为核心的功能,这篇笔记我们简单学习如何用JQuery库选择和操作DOM元素。
文档就绪回调函数
在开始一切之前,我们有必要先了解JQuery的文档就绪回调函数。我们都知道浏览器的HTML解析是从上到下进行的,如果你的jQuery代码放在<head>中(这是常见做法),可能出现代码执行但HTML中的元素还不存在的问题,$(document).ready()会监听DOM的就绪状态,DOM树构建完成后再执行代码。
$(document).ready(function(){
// 我们的JQuery代码
});
JQuery选择器
JQuery选择的基本语法如下。
$(selector).action()
其中,美元符号是JQuery对象的别名,selector是选择器字符串,action()是我们要执行的对元素的操作。
JQuery使用CSS选择器的语法筛选HTML元素,使用XPath表达式语法选择带有给定属性的HTML元素。
常用选择器如下。
| 选择器示例 | 描述 | 类型 |
|---|---|---|
$("#id") |
根据标签id选择元素 | 基本选择器 |
$("div") |
根据标签名选择元素 | 基本选择器 |
$(".classname") |
根据class名选择元素 | 基本选择器 |
$(".classname,.classname1,#id1") |
组合多个选择器(多个选择器并列) | 基本选择器 |
$("#id > .classname") |
子元素选择器(直接子元素) | 层次选择器 |
$("li:first") |
选择第一个li元素 | 过滤选择器 |
$("li:last") |
选择最后一个li元素 | 过滤选择器 |
$("li:even") |
选择索引为偶数的li元素(从0开始) | 过滤选择器 |
$("li:odd") |
选择索引为奇数的li元素 | 过滤选择器 |
$("li:eq(4)") |
选择索引等于4的li元素 | 过滤选择器 |
$("li:gt(2)") |
选择索引大于2的li元素 | 过滤选择器 |
$("li:lt(2)") |
选择索引小于2的li元素 | 过滤选择器 |
$("div:contains('aa')") |
选择包含文本“aa”的div元素 | 内容过滤选择器 |
$("td:empty") |
选择空的td元素(无子元素和文本) | 内容过滤选择器 |
$("div:has(selector)") |
选择包含指定selector的div元素 | 内容过滤选择器 |
$("td:parent") |
选择有子元素或文本的td元素 | 内容过滤选择器 |
$("div[id]") |
选择所有带有id属性的div元素 | 属性选择器 |
$("div[id='123']") |
选择id属性等于“123”的div | 属性选择器 |
$("div[id!='123']") |
选择id属性不等于“123”的div | 属性选择器 |
$("div[id^='qq']") |
选择id属性以“qq”开头的div | 属性选择器 |
$("div[id$='zz']") |
选择id属性以“zz”结尾的div | 属性选择器 |
$("div[id*='bb']") |
选择id属性包含“bb”的div | 属性选择器 |
$("input[id][name$='man']") |
多属性组合选择(同时满足多个属性条件) | 属性选择器 |
DOM操作
JQuery选择器筛选后得到的是JQuery对象,JQuery对象可以看做有JQuery特殊功能的原生DOM对象的数组,因为JQuery对象都可以隐式迭代的,从JQuery对象获得原生DOM对象也和数组很像,写法通常为var div = $("#d1")[0],原生DOM对象转JQuery对象则写为var jqDiv = $(div)。下面我们简要介绍JQuery对象特有的功能。
获取内容
- text():读取/设置元素的文本内容
- html():读取/设置元素的内容,包括html标记
- val():读取/设置表单字段的值
获取属性
- attr():读取/设置属性
修改css属性
- css():读取/设置css样式,例如:$("#d1").css("background-color", "red");
- addClass():添加class属性
- removeClass():删除class属性
添加元素
- append():在被选元素结尾插入子元素
- preappend():在被选元素开头插入子元素
- after():在被选元素之前插入
- before():在被选元素之后插入
接收参数:可以是文本,这样就插入文本节点,也可以是Element,也可以是JQuery对象
删除元素/内容
- remove():删除被选元素及其子元素,也可以接受一个符合JQuery语法的字符串参数,用于指定删除哪些元素
- empty():删除被选元素的子元素
尺寸处理
- width():读取/设置元素宽度(不包括内边距,边框,外边距)
- height():读取/设置元素高度(不包括内边距,边框,外边距)
- innerWidth():读取/设置元素包括内边距宽度
- innerHeight():读取/设置元素包括内边距高度
- outerWidth():读取/设置元素包括内边距和边框宽度
- outerHeight():读取/设置元素包括内边距和边框高度
遍历
向父节点遍历
- parent()返回上一级父元素
- parents()返回所有祖先元素
- parentsUntil()参数表示向父节点遍历直到(不包括终止条件),返回所有符合结果的元素
向子节点遍历
- children()返回向下一级的子元素,接受选择器参数
- find()返回所有子元素,接受选择器参数
同胞遍历
- siblings()返回所有同胞,接受选择器参数
- next()返回被选元素的下一个同胞
- nextAll()返回后续所有同胞
- nextUtil()后续同胞,接受终止条件
- prev() prevAll() prevUtil()同上
元素集合操作
上面已经说过JQuery对象和DOM对象的关系,JQuery对象默认就是类似于数组的,可能包含不止一个html元素。
- first():返回第一个对象
- last():返回最后一个对象
- eq():参数为索引值,注意和直接下标取的区别:这里取的是JQuery对象,直接下标取是DOM对象
- filter():参数为选择器,选择符合条件的对象
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。