BCSP-玄子前端开发之JavaScript+jQuery入门CH11_jQuery操作DOM
4.11 jQuery 操作节点
DOM操作分为三类
-
DOM Core:任何一种支持DOM的编程语言都可以使用它
- getElementById()
- getElementsByTagName()
-
HTML-DOM:用于处理HTML文档
- document.forms
- document.getElementById(“title”).innerHTML
-
CSS-DOM:用于操作CSS
- element.style.color=“green”
JavaScript对这三类DOM操作都提供了支持
4.11.1 Query中的DOM操作
jQuery对JavaScript中的DOM操作进行了封装
- 节点操作
- 节点属性操作
- 节点遍历
- 内容及Value值操作
- 样式操作
- CSS-DOM操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UKAEIb45-1682307408164)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20230424084402755.png)]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h2>热门动画排行</h2>
<ul class="animationList">
<li>名侦探柯南</li>
<li>阿拉蕾</li>
<li>海贼王</li>
</ul>
</body>
</html>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSEy2Qn2-1682307408167)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20230424084434063.png)]
4.11.2 jQuery中的节点操作
- 查找节点
- 创建节点
- 插入节点
- 删除节点
- 复制节点
- 替换节点
4.11.3 查找节点与创建节点
工厂函数 $() 可用于获取或创建节点
- $(selector):通过选择器获取节点
- $(element):把DOM节点转化成jQuery节点
- $(html):使用HTML字符串创建jQuery节点
$( function () {
// 查找节点
console.log( $("ul li") );
})
$( function () {
// 创建节点
var li1 = $("<li>大头儿子</li>");
var li2 = $("<li>小魔仙</li>");
})
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-999pKnI6-1682307408167)(./assets/image-20230424084710594.png)]
4.11.4 插入节点
- 元素内部插入子节点
// 创建节点
var li1 = $("<li>大头儿子</li>");
var li2 = $("<li>小魔仙</li>");
// 插入节点
$("ul").append(li1);
$("ul").prepend(li2);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K66nNfky-1682307408167)(./assets/image-20230424084808444.png)]
语法 | 功能 |
---|---|
append(content) | $(A).append(B)表示将B追加到A中如:$("ul").append($newNode1); |
appendTo(target) | $(A).appendTo(B)表示把A追加到B中如:$newNode1.appendTo("ul"); |
prepend(content) | $(A).prepend(B)表示将B前置插入到A中如:$("ul").prepend($newNode1); |
prependTo(target) | $(A).prependTo(B)表示将A前置插入到B中如:$newNode1.prependTo("ul"); |
- 元素外部插入同辈节点
// 创建节点
var li1 = $("<li>大头儿子</li>");
var li2 = $("<li>小魔仙</li>");
// 插入节点
$("ul").after(li1);
$("ul").before(li2);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KulJDZlA-1682307408168)(./assets/image-20230424085017525.png)]
语法 | 功能 |
---|---|
after(content) | $(A).after (B)表示将B插入到A之后如:$("ul").after($newNode1); |
insertAfter(target) | $(A).insertAfter(B)表示将A插入到B之后如:$newNode1.insertAfter("ul"); |
before(content) | $(A).before(B)表示将B插入至A之前如:$("ul").before($newNode1); |
insertBefore(target) | $(A).insertBefore(B)表示将A插入到B之前如:$newNode1.insertBefore("ul"); |
4.11.5 删除节点
jQuery中删除节点的方法
- 删除整个节点
$( selector ).remove( [selector] );
- 删除整个节点,保留元素的事件、数据
$( selector ).detach( [selector] );
- 清空节点内容
$(selector).empty();
4.11.6 复制节点
$( selector ).clone( [true|false] );
// 是否复制元素的事件和数据,默认为 false
$("ul li:eq(0)").clone(true).appendTo(".animationList");
$("ul li:eq(0)").clone(false).appendTo(".animationList");
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3izM3t2p-1682307408168)(./assets/image-20230424085504384.png)]
4.11.7替换节点
语法 | 功能 |
---|---|
replaceWith(content) | $(A). replaceWith(B)表示用B替换A |
replaceAll(target) | $(A). replaceAll (B)表示用A替换B |
$("ul li:eq(0)").replaceWith("<li>top1:名侦探柯南</li>");
$("<li>top2:阿拉蕾</li>").replaceAll("ul li:eq(1)");
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvcHNR7w-1682307408168)(./assets/image-20230424085530830.png)]
4.11.8 属性操作
- 获取和设置元素属性
- 删除元素属性
4.11.9 获取和设置元素属性
获取和设置属性值可使用attr()方法
- 获取属性值
$( selector ).attr( attribute )
- 设置单个属性值
$( selector ).attr( attribute, value )
- 设置多个属性值
$( selector ).attr( { attribute:value, attribute:value, … } )
- 示例
console.log( $("ul").attr("class") ); // 获取ul元素的class属性值
$("h2").attr( { id:"title", class:"title" } ); // 设置h2元素的id和class
console.log( $("h2").attr("class") );
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6d5CVUSK-1682307408169)(./assets/image-20230424085753888.png)]
4.11.10 删除元素属性
$( selector ).removeAttr( attribute )
$("ul").removeAttr("class"); // 移除元素的class属性
console.log( $("ul").attr("class") ); // 输出:undefined
4.11.11 节点遍历
- 遍历子元素
- 遍历同辈元素
- 遍历前辈元素
- 其他遍历方法
4.11.12 遍历子元素
获取元素的子元素可以使用children()方法
$( selector ).children( [selector] );
- 仅获取直接子元素
- 不包括文本节点
- 可选参数selector对子元素进行过滤
4.11.13 遍历同辈元素
语法 | 功能 |
---|---|
next( [selector] ) | 获取紧邻匹配元素之后的元素$(“li:eq(1)”).next().addClass(“orange”); |
prev( [selector] ) | 获取紧邻匹配元素之前的元素$(“li:eq(1)”).prev().addClass(“orange”); |
slibings( [selector] ) | 获取匹配元素的同辈元素$(“li:eq(1)”).siblings().addClass(“orange”); |
可选参数selector对兄弟元素进行过滤
4.11.14 遍历前辈元素
parent( [selector] )
- 获取匹配元素的父级元素,可选参数selector对父元素进行过滤
parents ( [selector] )
- 获取匹配元素的祖先元素,可选参数selector对祖先元素进行过滤
4.11.15 其他遍历方法
each()方法规定对每个匹配元素执行的函数
$( selector ).each( function( index, element ) );
- 参数index表示当前元素的下标,从0开始
- 参数element表示当前元素,也可在函数中使用this表示
- 当function函数返回false时可以停止循环
4.12 jQuery 操作元素内容
4.12.1 内容操作
- 操作HTML代码
- 操作元素内容
- 操作元素的属性值
4.12.2 操作HTML代码
设置和获取元素中的HTML内容可以使用html()方法,类似于JS中的innerHTML属性
$( selector ).html( [content] );
4.12.3 操作元素内容
获取或设置元素的文本内容可以使用text()方法
$( selector ).text( [content] );
4.12.4 html()方法与text()方法的比较
语法格式 | 方法 | 功能描述 |
---|---|---|
无参数 | html() | 获取第一个匹配元素的HTML内容或文本内容 |
text() | 获取所有匹配元素的文本内容 | |
有参数 | html( content ) | 设置所有匹配元素的HTML内容或文本内容 |
text( content ) | 设置所有匹配元素的文本内容 |
4.12.5 操作元素的属性值
获取和设置元素的value属性值可以使用val()方法
$( selector ).val( [value] );
4.13 jQuery 操作样式
4.13.1 设置和获取样式值
设置或获取指定元素的样式值可以使用css()方法
// 获取样式值
$( selector ).css( "属性" );
$( selector ).css( [ "属性1", "属性2", ... ] );
// 设置样式值
$( selector ).css( "属性", "属性值" );
$( selector ).css( { "属性1":"属性值1", "属性2":"属性值2", ... } );
4.13.2 追加和移除样式
如果一次需要设置多个样式值,使用css()过于繁琐
- 追加样式
$( selector ).addClass( "classname" );
$( selector ).addClass( "classname1 classname2 …" );
$( selector ).addClass( [ "classname1", "classname2", ... ] );
- 移除样式
$( selector ).removeClass( "classname" );
$( selector ).removeClass( "classname1 classname2 …" );
$( selector ).removeClass( [ "classname1", "classname2", ... ] );
$( selector ).removeClass();
4.13.3 样式的切换与判断
- 样式切换
$( selector ).toggleClass( "classname" );
$( selector ).toggleClass( "classname1 classname2 …" );
$( selector ).toggleClass( [ "classname1", "classname2", ... ] );
$( selector ).toggleClass();
模拟了addClass()与removeClass() 交替执行的过程,实现样式切换
- 判断匹配元素是否存在指定的类样式
$( selector ).hasClass( "classname" );
4.14 CSS-DOM 操作
4.14.1 CSS-DOM操作
除css()方法外,jQuery还提供有获取和设置元素高度、宽度等样式的操作方法
语法 | 功能 |
---|---|
height([value]) | 设置或返回匹配元素的高度 |
width([value]) | 设置或返回匹配元素的宽度 |
offset([value]) | 返回以像素为单位的top和left坐标。仅对可见元素有效 |
offsetParent( ) | 返回最近的已定位祖先元素。定位元素指的是元素的CSS position值被设置为relative、absolute或fixed的元素 |
position( ) | 返回第一个匹配元素相对于父元素的位置 |
scrollLeft([position]) | 参数可选。设置或返回匹配元素相对滚动条左侧的偏移 |
scrollTop([position]) | 参数可选。设置或返回匹配元素相对滚动条顶 |
BCSP-玄子前端开发之JavaScript+jQuery入门CH11_jQuery操作DOM