jQuery的DOM操作
查找节点
元素节点
- 可以通过jQuery选择器来查找元素节点
属性节点
- 通过attr()方法来获取指定元素节点的属性节点
文本节点
- 通过text()方法来获取指定元素节点的文本节点
示例代码
<body>
<button id="btn" name="anniu">按钮</button>
<script>
/* 定位页面元素 - 获取指定的元素节点 */
var $btn = $( '#btn' );
console.log( $btn );// 显示 jQuery.fn.init [button#btn, context: document, selector: "#btn"]
/* 通过text()方法来获取指定元素节点的文本节点 */
console.log( $btn.text() );// 显示 按钮(文本内容)
/* 通过attr()方法来获取指定元素节点的属性节点 - 该方法接收的参数为要获取的属性名 */
console.log( $btn.attr( 'name' ) );// 显示 anniu(属性值)
</script>
</body>
获取父节点
parent()方法
- 表示获取指定元素的父节点
参数 – 可选
- 通过选择器来进一步筛选
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 定位页面元素 */
var $lr = $( '#gwlr' );
console.log( $lr.parent( 'div' ) );// 显示 jQuery.fn.init [ul, prevObject: jQuery.fn.init(1), context: document] - 写参数后显示 jQuery.fn.init [prevObject: jQuery.fn.init(1), context: document]
</script>
</body>
parents()方法
- 表示获取指定元素的所有祖先节点
参数 – 可选
- 通过选择器来进一步筛选
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 定位页面元素 */
var $lr = $( '#gwlr' );
console.log( $lr.parents( 'div' ) );// 显示 jQuery.fn.init(4) [ul, div.game, body, html, prevObject: jQuery.fn.init(1), context: document] - 写参数后显示 jQuery.fn.init [div.game, prevObject: jQuery.fn.init(1), context: document]
</script>
</body>
closest()方法
- 表示获取指定元素的指定祖先节点,并返回第一个匹配的
参数
- 通过选择器来进一步筛选
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 定位页面元素 */
var $lr = $( '#gwlr' );
console.log( $lr.closest( 'div' ) );// 显示 jQuery.fn.init [prevObject: jQuery.fn.init(1), context: document] - 写参数后显示 jQuery.fn.init [div.game, prevObject: jQuery.fn.init(1), context: document]
</script>
</body>
获取子节点
children()方法
- 表示获取指定元素的所有子元素
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人
<ul>
<li>古龙种</li>
<li>鸟龙种</li>
<li>爬虫种</li>
</ul>
</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 定位页面元素 */
var $ul = $( 'ul' );
console.log( $ul.children() );// 显示 jQuery.fn.init(3) [li#gwlr, li, li, prevObject: jQuery.fn.init(1), context: document]
</script>
</body>
find()方法
- 表示获取指定元素的指定后代元素
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人
<ul>
<li>古龙种</li>
<li>鸟龙种</li>
<li>爬虫种</li>
</ul>
</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 定位页面元素 */
var $ul = $( 'ul' );
console.log( $ul.find( 'li' ) );// 显示 jQuery.fn.init [prevObject: jQuery.fn.init(1), context: document]
</script>
</body>
获取兄弟节点
next()方法
- 表示获取指定元素的下一个相邻兄弟元素
<body>
<div class="game">
<ul>
<li>怪物猎人</li>
<li id="tiandao">天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 定位页面原元素 */
var $td = $( '#tiandao' );
console.log( $td.next() );// 显示 jQuery.fn.init [li, prevObject: jQuery.fn.init(1), context: document]
</script>
</body>
prev()方法
- 表示获取指定元素的上一个相邻兄弟元素
<body>
<div class="game">
<ul>
<li>怪物猎人</li>
<li id="tiandao">天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 定位页面原元素 */
var $td = $( '#tiandao' );
console.log( $td.prev() );// 显示 jQuery.fn.init [li, prevObject: jQuery.fn.init(1), context: document]
</script>
</body>
创建节点
- 通过jQuery对象的工厂函数来进行创建元素节点
- 通过text()方法来创建文本内容
- 通过attr()方法来创建属性
- 也可以通过工厂函数来创建完整HTML代码
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 创建元素节点 */
var $newLi = $( '<li></li>' );
/* 创建文本内容 */
$newLi.text( '使命召唤' );
/* 创建属性 */
$newLi.attr( 'id', 'smzh' );
/* 将创建的元素节点添加到指定元素中 */
$( '#game' ).append( $newLi );
/* 通过工厂函数创建完整的元素 */
var $newLi2 = $( '<li id="nsh">逆水寒</li>' );
/* 将创建的元素节点添加到指定元素中 */
$( '#game' ).append( $newLi2 );
</script>
</body>
插入节点
- 分为内部插入和外部插入
内部插入
append()方法
- 表示插入到指定节点中的最后面 – 该方法由被插入的节点调用
appendTo()方法
- 表示插入到指定节点中的最后面 – 该方法由插入的节点调用
prepend()方法
- 表示插入到指定节点中的最前面 – 该方法由被插入的节点调用
prependTo()方法
- 表示插入到指定节点中的最前面 – 该方法由插入的节点调用
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 获取页面指定元素 */
var $ul = $( 'ul' );
/* 创建新元素节点 */
var $newLi1 = $( '<li>逆水寒</li>' );
/* 内部插入 */
/* append()方法插入 */
$ul.append( $newLi1 );
/* appendTo()方法插入 */
$newLi1.appendTo( $ul );
/* prepend()方法插入 */
$ul.prepend( $newLi1 );
/* prependTo()方法插入 */
$newLi1.prependTo( $ul );
</script>
</body>
外部插入
before()方法
- 表示插入到指定节点前一个相邻位置 – 该方法由被插入的节点调用
insertBefore()方法
- 表示插入到指定节点前一个相邻位置 – 该方法由插入的节点调用
after()方法
- 表示插入到指定节点后一个相邻位置 – 该方法由被插入的节点调用
insertAfter()方法
- 表示插入到指定节点后一个相邻位置 – 该方法由插入的节点调用
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 获取页面指定元素 */
var $ul = $( 'ul' );
/* 创建新元素节点 */
var $newLi2 = $( '<li>使命召唤</li>' );
/* 外部插入 */
/* before()方法插入 */
$ul.before( $newLi2 );
/* insertBefore()方法插入 */
$newLi2.insertBefore( $ul );
/* after()方法插入 */
$ul.after( $newLi2 );
/* insertAfter()方法插入 */
$newLi2.insertAfter( $ul );
</script>
</body>
删除节点
remove()方法
- 表示删除指定元素
- 该方法为指定元素调用删除自身
empty()方法
- 表示删除指定元素的所有后代元素
示例代码
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 获取页面元素 */
var $ul = $( 'ul' );
var $lr = $( '#gwlr' );
/* 通过remove()方法删除指定元素 */
$lr.remove();
/* 通过empty()方法删除指定元素的所有后代元素 */
$ul.empty();
</script>
</body>
替换节点
replaceWith()方法
- 表示由被替换的元素调用该方法进行替换“括号中填写用来替换的元素”
replaceAll()方法
- 表示由用来替换的元素调用该方法进行替换“括号中填写被替换的元素”
示例代码
<body>
<div class="game">
<ul>
<li id="gwlr">怪物猎人</li>
<li>天涯明月刀</li>
<li>绝地求生</li>
</ul>
</div>
<script>
/* 定位被替换的元素 */
var $lr = $( '#gwlr' );
/* 创建替换的元素 */
var $nsh = $( '<li>逆水寒</li>' );
/* 通过replaceWith()方法进行替换 */
$lr.replaceWith( $nsh );
/* 通过replaceAll()方法进行替换 */
$nsh.replaceAll( $lr );
</script>
</body>
复制节点
clone()方法
- 表示对指定的元素进行复制
参数 – 布尔值
- true – 表示对指定元素所绑定事件进行复制
- false – 表示不对指定元素所绑定的事件进行复制
- 该事件需要通过jQuery方式进行绑定才可复制
<body>
<button id="btn">按钮</button>
<script>
/* 定位被复制元素的位置 */
var $btn = $( '#btn' );
/* 为指定元素绑定事件 */
$btn.click( function(){
console.log( '这是按钮...' );
} );
/* 进行复制并插入到指定元素中 */
$btn.clone( true ).appendTo( $( 'body' ) );
</script>
</body>
属性和文本操作
属性操作
attr()方法
- 可以通过该方法对指定元素的指定属性进行获取
- 也可以通过该方法对指定元素的指定属性进行设置
removeAttr()方法
- 用于删除指定元素的指定属性
示例代码
<body>
<p id="p" name="text">三步白头</p>
<script>
/* 定位页面元素 */
var $p = $( '#p' );
/* 通过attr()方法获取指定元素的指定属性的属性值 */
console.log( $p.attr( 'name' ) );// 显示 text(属性值)
/* 通过attr()方法对指定元素的指定属性进行设置 */
console.log( $p.attr( 'name', 'wenben' ) );// 显示 <p id="p" name="wenben">三步白头</p>
/* 通过removeAttr()方法删除指定元素的指定属性 */
console.log( $p.removeAttr( 'name' ) );// 显示 <p id="p">三步白头</p>
</script>
</body>
文本操作
text()方法
- 可以通过该方法来获取指定元素的文本内容
- 也可以通过该方法对指定元素添加文本内容
示例代码
<body>
<p id="p" name="text">三步白头</p>
<script>
/* 定位页面元素 */
var $p = $( '#p' );
/* 通过text()方法获取指定元素的文本内容 */
console.log( $p.text() );// 显示 三步白头
/* 通过text()方法对指定元素文本内容进行设置 */
console.log( $p.text( '天道昭彰' ) );// 显示 <p id="p">天道昭彰</p>
</script>
</body>
样式操作
<head>
<meta charset="UTF-8">
<title>样式操作</title>
<style>
.d1 {
width: 200px;
height: 200px;
background-color: green;
}
.d2 {
width: 200px;
height: 200px;
background-color: blue;
}
</style>
</head>
<body>
<div id="d1" style="width: 100px;height: 100px;background-color: red"></div>
<div id="d2" class="d1"></div>
<div id="d3"></div>
<script src="jquery.js"></script>
<script>
/*
样式操作
attr( ) - 表示获取指定元素的指定样式“括号中填写指定的样式名”
addClass( ) - 表示添加指定样式“括号中填写指定的样式名”
removeClass( ) - 表示删除样式“括号中填写指定的样式名”
* removeClass(样式名) - 删除指定样式名的样式
* removeClass( ) - 删除所有的样式
toggleClass( ) - 表示切换样式“括号中填写指定的样式名”
* 如果指定元素具有指定的样式名,将删除该样式名
* 如果指定元素不具有指定的样式名,将添加该样式名
hasClass( ) - 表示判断指定元素是否具有指定样式名的样式“括号中必须填写指定的样式名”
css( ) - 表示获取当前有效样式“括号中填写指定的样式属性名”
* css( 属性名,属性值 ) - 也可以用来设置指定元素的指定样式属性
*/
var $d1 = $( '#d1' );
console.log( $d1.attr( 'style' ) );
var $d2 = $( '#d2' );
console.log( $d2.attr( 'class' ) );
var $d3 = $( '#d3' );
$d3.addClass( 'd2' );
$d3.removeClass( 'd2' );
$d2.toggleClass( 'd1' );
var $d2s = $d2.hasClass( 'd1' );
console.log( $d2s );
var $d2x = $d2.css( 'width' );
console.log( $d2x );
$d2.css( 'backgroundColor', 'blueviolet' );
</script>
</body>