DOM節點的複製與替換
阿新 • • 發佈:2020-07-06
clone()
detach是剪下的話,clone就是複製了
clone(ture)傳遞一個布林值ture用來指定,這樣不僅僅只是克隆單純的節點結構,還要把附帶的事件與資料給一併克隆了。
JavaScript部分
$("div").on('click', function() {//執行操作})
//clone處理一
$("div").clone() //只克隆了結構,事件丟失
//clone處理二
$("div").clone(true) //結構、事件與資料都克隆
元素資料(data)內物件和陣列不會被複制,將繼續被克隆元素和原始元素共享。意思是不會copy元素資料和陣列(主要是記憶體上),所有copy的元素都共享一個
replaceWith()和replaceAll()
$("p:eq(1)").replaceWith('<a style="color:red">替換第二段的內容</a>')
$('<a style="color:red">替換第二段的內容</a>').replaceAll('p:eq(1)')
- .replaceAll()和.replaceWith()功能類似,主要是目標和源的位置區別
- .replaceWith()與.replaceAll() 方法會刪除與節點相關聯的所有資料和事件處理程式
- html()只是把所匹配到的節點裡的內容給替換掉,而replaceWith()是把匹配到的這節點替換掉
wrap()包裹
將元素用其他元素包裹起來,也就是給它增加一個父元素。
$('p').wrap('<div></div>')
//等同於
$('p').wrap(function() {
return '<div></div>';
})
得到:
<div>
<p>p元素</p>
</div>
unwrap()
將匹配元素集合的父級元素刪除,保留自身(和兄弟元素,如果存在)在原來的位置。例如:
<div>
<p>p元素</p>
</div>
刪除這段程式碼中的div,一般常規的方法會直接通過remove或者empty方法,但是如果要保留內部元素p,使用:
$('p').unwarp()
找到p元素,然後呼叫unwarp方法,這樣只會刪除父輩div元素了。
wrapAll()
wrap是針對單個dom元素處理,如果要將集合中的元素用其他元素包裹起來,也就是給他們增加一個父元素
<p>p元素</p>
<p>p元素</p>
$('p').wrapAll('<div></div>')
得到:
<div>
<p>p元素</p>
<p>p元素</p>
</div>
如果是用$('p').wrap('')
得到:
<div>
<p>p元素</p>
</div>
<div>
<p>p元素</p>
</div>
wrapInner()
給集合中匹配的元素的內部,增加包裹的HTML結構.
<div>p元素</div>
<div>p元素</div>
$('div').wrapInner('<p></p>')
得到:
<div>
<p>p元素</p>
</div>
<div>
<p>p元素</p>
</div>