jQUery中的DOM操作
一.DOM简介
DOM(Document Object Model—文档对象模型): 一种与浏览器、平台、语言无关的接口, 使用该接口可以轻松地访问页面中所有的标准组件
DOM操作的分类:
- DOM Core: DOM Core并不专属于JS, 任何一种支持DOM的程序设计语言都可以使用它. 它的用途并非仅限于处理网页, 也可以用来处理任何一种用标记语言编写的文档, 如:XML
- HTML DOM: 使用JS和DOM为HTML文件编写脚本时, 有许多专属于HTML-DOM的属性
- CSS-DOM: 针对于CSS操作, 在JS中, CSS-DOM主要用于获取和设置style对象的各种属性
二.jQuery操作HTML-DOM
1.查找结点
- 查找属性结点: 通过jQuery选择器完成
- 操作属性节点: 查找到元素对应节点后, 通过jQuery对象的attr()方法来获取它的各属性值
- 操作文本节点: 通过text()方法
2.创建节点
使用jQuery的工厂函数$(str); 会根据传入的html格式str字符串, 创建一个DOM对象, 并把这个DOM对象包装成一个jQuery对象返回.
注意:
- 创建的新元素节点不会被自动添加到文档中, 需要手动调用jQuery的方法插入到当前文档.
- 当创建单个元素时, 标签开始, 必须要结束该标签.例: $("")
创建文本节点就是在创建元素节点时直接将文本内容写进去; 创建属性节点也是这样.
3.插入节点
方法 | 描述 |
---|---|
append() | 向每个匹配的元素的内容的结尾处追加内容 |
appendTo() | 将每个匹配的元素追加到指定元素的内部的结尾处 |
prepend() | 向每个匹配的元素的内容的开始处插入内容 |
prependTo() | 将每个匹配的元素插入到指定元素的内部的开始处 |
这些方法插入的节点都将成为文档中某个节点的子节点.
方法 | 描述 |
---|---|
after() | 向每个匹配的元素的之后插入内容 |
insertAfter() | 将匹配的元素的插入到指定的元素之后 |
before() | 向每个匹配的元素的之前插入内容 |
insertBefore() | 将匹配的元素的插入到指定的元素之首 |
以上方法不但能将新创建的DOM元素插入到文档中, 也能对原有的DOM元素进行移动.
1 | //下面两种方法等价: |
4.删除节点
remove(): 从DOM中删除所有匹配的元素, 传入的参数用于根据jQuery表达式来筛选元素. 当某个节点用remove()方法删除后, 该节点以及所包含的所有后代节点将被同时删除. 这个方法的返回值是一个指向已被删除的节点的引用.
empty(): 清空节点—清空元素中的所有后代节点(不包括属性节点).
5.复制节点
clone(): 克隆匹配的DOM元素, 返回值为克隆后的副本. 此时复制的节点不具有任何行为.
clone(true): 复制元素的同时也可复制元素中的事件.
6.替换节点
replaceWith(): 将所有匹配到的元素都替换为指定的HTML或DOM元素
replaceAll(): 颠倒了的replaceWith()方法, 与append()与appendTo()方法类似
注意: 若在替换之前, 已在元素上绑定了事件, 替换之后原先绑定的事件会与原来的元素一起消失.
若想互换文档中的两个节点的话, 要先克隆其中一个节点.
7.包裹节点
做一些网页特效时, 往往会用到这些方法.
wrap(): 将匹配到的所有元素一个个用其他元素包裹起来
wrapAll(): 将匹配到的所有元素作为整体用一个元素包裹起来
wrapInner(): 将每一个匹配元素的内容用其他结构化标记包裹起来
1 | //例: |
三.jQuery操作CSS-DOM
1.操作class属性
获取和设置class属性都可以使用attr()方法, 也可以使用专门的
方法 | 描述 |
---|---|
addClass() | 为class属性添加一个值 |
removeClass() | 从匹配元素中删除全部或指定class属性的值 |
toggleClass() | 切换class属性的值, 有则删除, 无则添加 |
hasClass() | 判断元素class属性是否有某个值 |
2.操作元素样式
操作元素的css样式, 均可通过 css() 方法实现
- 通过opacity属性操作元素透明度: css(“opacity”,value);
- 通过width和height属性操作元素宽高, 也可直接用width()和height()方法操作
获取元素在当前视窗中的相对位移: offset()方法. 其返回的对象包含两个属性: top和left. 该方法只对可见元素有效