BCSP-玄子前端开发之JavaScript+jQuery入门CH11_jQuery操作DOM

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值