摘要:通過方法添加的元素剛好相反,內容在方法前面,無論是一個選擇器表達式或創建作為標記上的標記它都將被插入到目標容器的末尾。主要的不同是語法特別是插入內容和目標的位置。
DOM節點的創建 DOM創建節點及節點屬性
首先,介紹如何使用JavaScript創建div節點元素,主要包括創建div節點元素的屬性和創建div節點元素的樣式兩大部分內容
創建流程:
創建節點(常見的:元素、屬性和文本)
添加節點的一些屬性
加入到文檔中
涉及方法:
創建元素:document.createElement
設置屬性:setAttribute
添加文本:innerHTML
加入文檔:appendChild
注:
每一個元素節點都必須多帶帶創建
節點是屬性需要多帶帶設置,而且設置的接口不是很統一
添加到指定的元素位置不靈活
瀏覽器兼容問題處理
jQuery節點創建與屬性的處理 創建元素節點動態創建元素節點
點擊body區域會動態創建元素節點
常見的是直接把這個節點的結構給通過HTML標記字符串描述出來,通過$()函數處理,$("html結構")
$("")創建為文本節點
與創建元素節點類似,可以直接把文本內容一并描述
$("創建為屬性節點我是文本節點")
與創建元素節點同樣的方式
$("我是文本節點")
通過jQuery對上一節代碼進行改造
$("")動態創建DIV元素節點
這就是jQuery創建節點的方式,讓我們保留HTML的結構書寫方式,非常的簡單、方便和靈活
DOM節點的插入 DOM內部插入append()與appendTo()動態創建的元素只是臨時存放在內存中,最終需要放到頁面文檔并呈現出來。這里就涉及到一個位置關系,常見的就是把這個新創建的元素,當作頁面某一個元素的子元素放到其內部。針對這樣的處理,jQuery就定義2個操作的方法
append:這個操作與對指定的元素執行原生的appendChild方法,將它們添加到文檔中的情況類似
appendTo:實際上,使用這個方法是顛倒了常規的$(A).append(B)的操作,即不是把B追加到A中,而是把A追加到B中。
.append()和.appendTo()兩種方法功能相同,主要的不同是語法——內容和目標的位置不同
append()前面是被插入的對象,后面是要在對象內插入的元素內容 appendTo()前面是要插入的元素內容,而后面是被插入的對象
DOM外部插入after()與before()通過append與appendTo添加元素
外部插入的處理,也就是兄弟之間的關系處理,這里jQuery引入了2個方法,可以用來在匹配的元素前后插入內容
選擇器的描述
before與after都是用來對相對選中元素外部增加相鄰的兄弟節點
2個方法都是都可以接收HTML字符串,DOM 元素,元素數組,或者jQuery對象,用來插入到集合中每個匹配元素的前面或者后面
2個方法都支持多個參數傳遞after(div1,div2,....) 可以參考右邊案例代碼
注意點
after向元素的后邊添加html代碼,如果元素后面有元素了,那將后面的元素后移,然后將html代碼插入
before向元素的前邊添加html代碼,如果元素前面有元素了,那將前面的元素前移,然后將html代碼插
DOM內部插入prepend()與prependTo()通過before與after添加元素
測試before
測試after
在元素內部進行操作的方法,除了在被選元素的結尾(仍然在內部)通過append與appendTo插入指定內容外,相應的還可以在被選元素之前插入,jQuery提供的方法是prepend與prependTo
選擇器的描述:
通過右邊代碼可以看到prepend與prependTo的使用及區別:
.prepend()方法將指定元素插入到匹配元素里面作為它的第一個子元素 (如果要作為最后一個子元素插入用.append()).
.prepend()和.prependTo()實現同樣的功能,主要的不同是語法,插入的內容和目標的位置不同
對于.prepend() 而言,選擇器表達式寫在方法的前面,作為待插入內容的容器,將要被插入的內容作為方法的參數
.prependTo() 正好相反,將要被插入的內容寫在方法的前面,可以是選擇器表達式或動態創建的標記,待插入內容的容器作為參數。
這里總結下內部操作四個方法的區別:
append()向每個匹配的元素內部追加內容
prepend()向每個匹配的元素內部前置內容
appendTo()把所有匹配的元素追加到另一個指定元素的集合中
prependTo()把所有匹配的元素前置到另一個指定的元素集合中
DOM外部插入insertAfter()與insertBefore()通過prepend與prependTo添加元素
測試prepend
測試prependTo
與內部插入處理一樣,jQuery由于內容目標的位置不同,然增加了2個新的方法insertAfter與insertBefore
.before()和.insertBefore()實現同樣的功能。主要的區別是語法——內容和目標的位置。 對于before()選擇表達式在函數前面,內容作為參數,而.insertBefore()剛好相反,內容在方法前面,它將被放在參數里元素的前面
.after()和.insertAfter() 實現同樣的功能。主要的不同是語法——特別是(插入)內容和目標的位置。 對于after()選擇表達式在函數的前面,參數是將要插入的內容。對于 .insertAfter(), 剛好相反,內容在方法前面,它將被放在參數里元素的后面
before、after與insertBefore、insertAfter的除了目標與位置的不同外,后面的不支持多參數處理
注意事項
insertAfter將JQuery封裝好的元素插入到指定元素的后面,如果元素后面有元素了,那將后面的元素后移,然后將JQuery對象插入;
insertBefore將JQuery封裝好的元素插入到指定元素的前面,如果元素前面有元素了,那將前面的元素前移,然后將JQuery對象插入;
DOM節點的刪除通過insertBefore與insertAfter添加元素
測試insertBefore,不支持多參數
測試insertAfter,不支持多參數
jQuery提供了幾種不同的方法來處理移除頁面上節點的操作
empty方法:清空方法,但是與刪除有點不一樣,因為它只移除指定元素中的所有子節點
這個方法不僅移除子元素(和其他后代元素),同樣移除元素里的文本。因為,根據說明,元素里任何文本字符串都被看做是該元素的子節點
中國有嘻哈
如果我們通過empty方法移除里面div的所有元素,它只是清空內部的html代碼,但是標記仍然留在DOM中
//通過empty處理 $(".hello").empty() //結果:remove()的有參用法和無參用法中國有嘻哈
被移除
remove與empty一樣,都是移除元素的方法,但是remove會將元素自身移除,同時也會移除元素內部的一切,包括綁定的事件及與該元素相關的jQuery數據。
例如一段節點,綁定點擊事件
$(".hello").on("click",fn)中國有嘻哈
如果不通過remove方法刪除這個節點其實也很簡單,但是同時需要把事件給銷毀掉,這里是為了防止"內存泄漏",所以前端開發者一定要注意,綁了多少事件,不用的時候一定要記得銷毀
通過remove方法移除div及其內部所有元素,remove內部會自動操作事件銷毀方法,所以使用使用起來非常簡單
//通過remove處理 $(".hello").remove() //結果:全部被移除 //節點不存在的同時,事件也會被銷毀中國有嘻哈
remove表達式參數
remove比empty好用的地方就是可以傳遞一個選擇器表達式用來過濾將被移除的匹配元素集合,可以選擇性的刪除指定的節點
可以通過$()選擇一組相同的元素,然后通過remove()傳遞篩選的規則從而進行處理
empty和remove區別要用到移除指定元素的時候,jQuery提供了empty()與remove([expr])二個方法,兩個都是刪除元素,但是兩者還是有區別
empty方法
嚴格地講,empty()方法并不是刪除節點,而是清空節點,它能清空元素中的所有后代節點
empty不能刪除自己本身這個節點
remove方法
該節點與該節點所包含的所有后代節點將同時被刪除
提供傳遞一個篩選的表達式,刪除指定合集中的元素
保留數據的刪除操作detach()這個方法不會把匹配的元素從jQuery對象中刪除,因而可以在將來再使用這些匹配的元素。與remove()不同的是,所有綁定的事件、附加的數據等都會保留下來
$("div").detach()這一句會移除對象,僅僅是顯示效果沒有了。但是內存中還是存在的。當你append之后,又重新回到了文檔流中。就又顯示出來了
當然這里要特別注意,detach方法是JQuery特有的,所以它只能處理通過JQuery的方法綁定的事件或者數據
detach()和remove()區別P元素1,默認給綁定一個點擊事件
P元素2,默認給綁定一個點擊事件
通過一張對比表來解釋2個方法之間的不同
方法名 | 參數 | 事件及數據是否也被移除 | 元素自身是否被移除 |
---|---|---|---|
remove | 支持選擇器表達 | 是 | 是(無參數時),有參數時要根據參數所涉及的范圍 |
detach | 支持選擇器表達 | 否 | 是(無參數時),有參數時要根據參數所涉及的范圍 |
remove:移除節點
無參數,移除自身整個節點以及該節點的內部的所有節點,包括節點上事件與數據
有參數,移除篩選出的節點以及該節點的內部的所有節點,包括節點上事件與數據
detach:移除節點
移除的處理與remove一致
與remove()不同的是,所有綁定的事件、附加的數據等都會保留下來
例如:$("p").detach()這一句會移除對象,僅僅是顯示效果沒有了。但是內存中還是存在的。當你append之后,又重新回到了文檔流中。就又顯示出來了。
給頁面2個p元素節點綁定點擊事件,點擊后彈出自己本身的節點內容
元素p1,同時綁定點擊事件
元素p2,同時綁定點擊事件
通過點擊2個按鈕后觀察方法處理的區別
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87258.html
摘要:將匹配元素集合的父級元素刪除,保留自身和兄弟元素,如果存在在原來的位置。方法查找指定元素集合中每一個元素的同輩元素。每次回調函數執行時,會傳遞當前循環次數作為參數從開始計數。 DOM節點的創建 先介紹下需要用到的瀏覽器提供的一些原生的方法(這里不處理低版本的IE兼容問題)創建流程比較簡單,大體如下: 創建節點(常見的:元素、屬性和文本) 添加節點的一些屬性 加入到文檔中流程中涉及的一...
摘要:刪除指定的屬性,這個方法就不可以使用匿名函數,傳遞和均無效。遍歷對象數組索引,鍵,屬性名屬性值,值相當于遍歷原生對象數組時,為元素。在使用使用時,可以使用傳入匿名函數的方法,實現由默認到幾個之間的切換。 轉自個人博客 基礎 DOM 和 和 CSS 一. 設置元素及內容 我們通過前面所學習的各種選擇器、過濾器來得到我們想要操作的元素。這個時候,我們就可以對這些元素進行 DOM 的操作。...
摘要:在匹配元素集合中的每個元素后面插入參數所指定的內容,作為其兄弟節點。當需要移走一個元素,不久又將該元素插入時,這種方法很有用。實例從中移除集合中匹配元素的所有子節點。 JQuery干貨篇之插入元素 本次使用的html,css還是我上一篇的源代碼,詳情請看上一篇文章 分類 插入子元素:append,prepend ,appendTo,prependTo 封裝包裹元素:wrap,wrap...
摘要:在匹配元素集合中的每個元素后面插入參數所指定的內容,作為其兄弟節點。當需要移走一個元素,不久又將該元素插入時,這種方法很有用。實例從中移除集合中匹配元素的所有子節點。 JQuery干貨篇之插入元素 本次使用的html,css還是我上一篇的源代碼,詳情請看上一篇文章 分類 插入子元素:append,prepend ,appendTo,prependTo 封裝包裹元素:wrap,wrap...
閱讀 2931·2021-11-04 16:06
閱讀 769·2021-09-30 09:56
閱讀 1835·2021-09-22 10:02
閱讀 2618·2019-08-29 13:43
閱讀 2210·2019-08-29 13:42
閱讀 2295·2019-08-29 12:21
閱讀 1047·2019-08-29 11:29
閱讀 1381·2019-08-26 13:51