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>