《鋒利的jQuery》三、jQuery的DOM操作


title: 《鋒利的jQuery》三、jQuery的DOM操作
date: 2017-07-03 09:23:54
tags: 鋒利的jQuery


插入節點

append()

向每個匹配的元素內部追加內容 $('p').append('<b>你好</b>');結果為<p>一個p元素<b>你好</b></p>

appendTo()

將所有的匹配元素追加到指定的元素中,和append是相反的。$('<b>你好</b>').appendTo('p');結果為<p>一個p元素<b>你好</b></p>

prepend()

向每個匹配的元素內部前置內容 $('p').prepend('<b>你好</b>') 結果為 <p><b>你好</b>一個p元素</p>

prependTo()

將所有匹配的元素前置到指定的元素中。和prepend是相反的。 $('<b>你好</b>').prependTo('p') 結果為 <p><b>你好</b>一個p元素</p>

after()

在每個匹配的元素之后插入內容。$('p').after('<b>你好</b>') 結果為 <p>一個p元素</p><b>你好</b>

insertAfter()

將所有匹配的元素插入到指定元素的后面,和after是相反的。$('<b>你好</b>').insertAfter('p') 結果為 <p>一個p元素</p><b>你好</b>

before()

在每個匹配的元素之前插入內容。 $('p').before('<b>你好</b>') 結果為 <b>你好</b><p>一個p元素</p>

insertBefore()

將所有匹配的元素插入到指定的元素的前面,和before是相反的。$('<b>你好</b>').insertBefore('p') 結果為 <b>你好</b><p>一個p元素</p>

刪除節點

remove()

刪除匹配元素本身和所有后代節點。返回值是所有刪除的節點的引用,因此可以在以后再使用這些刪除的元素。

$('ul li:eq(1)').remove() 獲取第2個<li>元素節點后,將它從網頁中刪除。

該方法還可以傳遞參數,通過參數選擇性的刪除元素。

$('ul li').remove('li[title!="菠蘿"]');<li>元素中屬性title不等于菠蘿的<li>元素刪除。

detach()

和remove()一樣也是從DOM中去掉匹配的元素,但是不會從jQuery對象中刪除,因而可以在將來再使用這些匹配的元素。和remove()不同的是,所有綁定的事件、附加的數據等都會保留下來。

empty()

empty()并不是刪除節點,而是清空節點,清空匹配元素的所有后代節點。

$('ul li:eq(1)').empty() 獲取第2個<li>元素節點后,清空此元素里的內容。

復制節點

clone()

通過clone()克隆一個節點,默認不可隆節點的事件,需要傳參數true就可以同時復制節點中綁定的事件。

替換節點

replaceWith() 和 replaceAll()

替換節點是replaceWith()replaceAll()。如果在替換之前,已經為元素綁定事件,替換后原先綁定的事件將會與被替換的元素一起消失,需要在新元素上重新綁定事件。

$('p').replaceWith('<span>替換為span元素</span>') 將頁面中的p元素替換為span元素。

$('<span>替換為span元素</span>').replaceAll('p') 用span元素去替換頁面中的p元素。

包裹節點

wrap()

將匹配的每個元素用其他標記包裹起來,而且它不會破壞原始文檔的語義。

$('strong').wrap('<b></b>');<b>標簽把<strong>元素包裹起來。結果為<b><strong></strong></b> <b><strong></strong></b> <b><strong></strong></b>

wrapAll()

將所有匹配的元素用一個標簽包裹起來。

$('strong').wrapAll('<b></b>');<b>標簽把頁面中所有<strong>元素包裹起來。結果為<b><strong></strong> <strong></strong> <strong></strong></b>

wrapInner()

將匹配的每個元素的子內容用其他標簽包裹起來。

$('strong').wrapAll('<b></b>'); 元素<strong>內的內容被一對<b>標簽包裹了。結果為``<strong><b></b></strong> <strong><b></b></strong> <strong><b></b></strong>`。

屬性操作

attr()和prop()

用于獲取和設置屬性,只傳一個參數是獲取一個屬性的值,傳兩個參數是設置屬性,要設置多個屬性可以傳入一個對象。

prop()比較適合用于設置和獲取html元素的固有屬性,而attr()比較適合設置和獲取自定義屬性。

最主要的區別是表單元素的屬性,比如checkedselected,這也是固有屬性,這種通常我會希望如果沒有設置或者用戶操作沒有選中則返回false,設置了或者選中了則返回true。

// 用input這個標簽舉例子來看一下兩者主要區別
<input type="checkbox" name="" id="ipt"/>
console.log($("input").attr("checked"))      // 打印undefined
console.log($("input").prop("checked"))      // 打印false
<input type="checkbox" name="" id="ipt" checked/>
console.log($("input").attr("checked"))      // 打印checked
console.log($("input").prop("checked"))      // 打印true

removeAttr()和removeProp()

只需要傳一個參數,要刪除的屬性名。

removeAttr()會刪除整個屬性,而remobeProp()只會讓該屬性的值變為undefined,而且removeProp()對自定義屬性無效。

樣式操作

addClass()

此方法用來追加樣式,在匹配元素原有類名基礎之上追加一個類名,$('p').addClass('active')

removeClass()

刪除類名,當不傳參數時是刪除匹配元素對象的所有類名,$('p').removeClass();就是刪除所有p元素的所有類名。

也可以刪除指定類名,$('p').removeClass('high');刪除所有p元素的high類名。

toggleClass()

替換類名,即如果傳入的類名存在便刪除,如果不存在就追加,$('p').toggleClass('active')

hasClass()

判斷匹配的元素對象中是否還有某個類名,返回的是布爾值,$('p').hasClass('active')

設置和獲取內容

html()

用于讀取和設置匹配元素的html內容,和innerHTML方法的效果類似。不傳參數即是獲取。

text()

用于讀取和設置匹配元素的文本內容,和innerText方法類似,但是text()兼容所有瀏覽器,而innerText不兼容firefox。

val()

用于讀取和設置文本框、下拉列表、單選框、多選框元素的值,其中如果元素為多選,則會返回一個包含所有選擇的值的數組。

如果不傳參數則是獲取值,傳入參數是設置元素的值,由于val()專門針對表單元素,所以可以對下拉列表、單選框、多選框進行操作。

$('#multiple').val('選項二');   //讓下拉列表默認選擇第二個選項,參數就是選項的文本內容
$(':checbox').val(['check2','check3'])      // 多選框,默認選擇第二和第三項,多個參數用數組形式設置。

遍歷節點

children()

此方法用來獲取匹配元素的所有子元素的個數,這個方法只考慮子元素而不考慮后代元素。

next()

獲取匹配元素后面緊鄰的同輩元素。

prev()

獲取匹配元素前面緊鄰的同輩元素。

siblings()

獲取匹配元素前后所有的同輩元素,不包含自己。

closest()

獲取最近的匹配元素,首先檢查當前元素是否匹配,如果匹配則直接返回元素本身。如果不匹配則逐級向上查找直到找到匹配元素,如果什么都沒找到返回一個空jQuery對象。

parent()、parents()

parent()是獲取匹配元素的父級元素,只返回一個節點。

parents()是獲取匹配元素的祖先元素,返回多個節點。

find()

搜索所有匹配元素下的指定的元素。

filter()

獲取匹配元素中符合參數表達式的元素,和find()不同的是find()是去后代中匹配,而filter()是在當前元素中去匹配。

還可以傳入一個函數,函數內部return一個判斷表達式,若為true,則返回表達式匹配的元素。

nextAll()

獲取匹配元素之后的所有同輩元素

prevAll()

獲取匹配元素之前的所有同輩元素

CSS-DOM

css()

傳入一個css屬性就可以獲取匹配元素的css屬性值,不論行內還是外部引用的都可以獲取。

傳入兩個參數,第一個是屬性,第二個是屬性值則可以設置匹配元素的css樣式,也可以直接傳入一個對象。對于帶-符號的屬性要用駝峰的寫法,并且屬性最好加上引號。

width()、height()

直接獲取匹配元素的寬度和高度,不帶單位,而且這里獲取的寬高和css設置無關,是元素在頁面中實際的寬高。

也可以傳遞一個值設置高度和寬度,值的格式是字符串。

offset()

獲取元素在當前視窗的相對偏移,返回值是一個對象,即top和left,只對可見元素有效。

position()

獲取元素相對于最近的一個position樣式屬性設置為relative或者absolute的祖父節點的相對偏移,也是返回一個對象并且又top和left。

scrollTop()、scrollLeft()

獲取元素的滾動條距頂端的距離和距左側的距離。

可以給這兩個方法指定一個參數,控制元素的滾動條滾動到指定位置。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,013評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,346評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,146評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,534評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,767評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,318評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,074評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,258評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,486評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,993評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,234評論 2 375

推薦閱讀更多精彩內容

  • 第1章 簡介 第2章 DOM節點的創建 2-1 DOM創建節點及節點屬性 通過JavaScript可以很方便的獲...
    mo默22閱讀 828評論 0 8
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,807評論 18 139
  • 從廚房到書堂 從粗茶到紅酒 從你的圍裙,到我的煙斗 山高水長 哪里接頭 去相濡以沫的天長地久 一襲衣,一碗粥, 一...
    偌星閱讀 266評論 14 7
  • iOS UITabbarController 下不同item 之間UINavaitionController 下視...
    外星來的閱讀 2,498評論 4 1
  • 六個孩子,嗷嗷待哺,而它們的母親卻充耳不聞,任由它們聲嘶力竭的叫喚,喉嚨都啞了。 叫得累了,也安靜一會兒吧。一雙雙...
    田園聽雨閱讀 219評論 6 1