用JavaScript實(shí)現(xiàn)用一個(gè)DIV來包裝文本元素節(jié)點(diǎn)
當(dāng)你的應(yīng)用需要依賴某個(gè)特定的JavaScript類庫時(shí),你無意中總會(huì)試圖解決某些類庫自身的問題,而不是語言的問題。就比如當(dāng)我試圖將文本(可能也包含HTML元素)用一個(gè)DIV元素包起來時(shí)。假設(shè)有以下HTML:
This is some text and <a href="">a link</a>
這時(shí)候如果想把它轉(zhuǎn)換為下面這樣:
<div>This is some text and <a href="">a link</a><div>
最簡單暴力的方法是,你可以在父元素上通過 .innerHTML 屬性來執(zhí)行更新,但問題是這樣一來所有綁定的事件監(jiān)聽都會(huì)失效,因?yàn)槭褂?innerHTML 時(shí)會(huì)重新創(chuàng)建一個(gè)HTML元素。這真是個(gè)大玻璃杯!所以這時(shí)候只能利用JavaScript來實(shí)現(xiàn) —— 尺有所短、寸有所長。下面是實(shí)現(xiàn)代碼:
var newWrapper = document.createElement('div'); while(existingParent.firstChild) { // 移動(dòng)DOM元素,不會(huì)創(chuàng)建新元素 newWrapper.appendChild(existingParent.firstChild); }
這里不能使用for循環(huán),因?yàn)?childNodes 是一個(gè)動(dòng)態(tài)節(jié)點(diǎn)組成的集合,只要移動(dòng)節(jié)點(diǎn)就會(huì)影響到他的index索引值。我們用while循環(huán)一直檢測(cè)父元素的 firstChild ,如果其返回一個(gè)代表 false 的值, 那么你就知道所有的節(jié)點(diǎn)都已經(jīng)移到新的parent中了!
- javascript刪除元素節(jié)點(diǎn)removeChild()用法實(shí)例
- javascript刪除一個(gè)html元素節(jié)點(diǎn)的方法
- JS 使用for循環(huán)遍歷子節(jié)點(diǎn)查找元素
- 一個(gè)獲取第n個(gè)元素節(jié)點(diǎn)的js函數(shù)
- js遍歷子節(jié)點(diǎn)子元素附屬性及方法
- JS獲取節(jié)點(diǎn)的兄弟,父級(jí),子級(jí)元素的方法
- js創(chuàng)建元素(節(jié)點(diǎn))示例
- javascript基礎(chǔ)之查找元素的詳細(xì)介紹(訪問節(jié)點(diǎn))
- Js 獲取HTML DOM節(jié)點(diǎn)元素的方法小結(jié)
- JavaScript實(shí)現(xiàn)獲取某個(gè)元素相鄰兄弟節(jié)點(diǎn)的prev與next方法
相關(guān)文章
原生js實(shí)現(xiàn)trigger方法示例代碼
這篇文章主要給大家介紹了關(guān)于利用原生js實(shí)現(xiàn)trigger方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Javascript中獲取出錯(cuò)代碼所在文件及行數(shù)的代碼
之前在做一個(gè)Javascript的日志控制臺(tái)功能模塊,希望能夠在Javascript代碼出錯(cuò)時(shí)捕獲此錯(cuò)誤,并將出錯(cuò)的文件及相應(yīng)的行數(shù)打印到控制臺(tái)并匯報(bào)給服務(wù)器。2010-09-09基于JavaScript的數(shù)據(jù)結(jié)構(gòu)隊(duì)列動(dòng)畫實(shí)現(xiàn)示例解析
這篇文章主要介紹了基于JavaScript的數(shù)據(jù)結(jié)構(gòu)隊(duì)列動(dòng)畫實(shí)現(xiàn)示例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08通用javascript代碼判斷版本號(hào)是否在版本范圍之間
通用判斷版本號(hào)是否在兩者之間,也可以搭配判斷是否大于某版本號(hào),小于取反即可,本文給大家介紹通用javascript代碼判斷版本號(hào)是否在版本范圍之間,需要的朋友參考下2015-11-11JavaScript+Canvas實(shí)現(xiàn)繪制音頻可視化波形圖
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript和Canvas實(shí)現(xiàn)繪制音頻可視化波形圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02javascript?實(shí)現(xiàn)純前端將數(shù)據(jù)導(dǎo)出excel兩種方式
這篇文章主要介紹了javascript?實(shí)現(xiàn)純前端將數(shù)據(jù)導(dǎo)出excel兩種方式,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參一下2022-07-07