HTML DOM的增刪改查總結(jié)(查找)

ct_htmltree.gif

查找 HTML 元素

1. 原生js
通過 id 查找 HTML 元素
document.getElementById(id)
通過標(biāo)簽名找到 HTML 元素
document.getElementsByTagName(tagName)
通過類名找到 HTML 元素
document.getElementsByClassName(className)
通過 HTML5 querySelector API查找元素
element = document.querySelector(selectors)
  • element是一個(gè)Element對象
  • selectors是一個(gè)包含一個(gè)或多個(gè)由逗號分隔的CSS選擇器的字符串
elementList = document.querySelectorAll(selectors)
  • elementList 是一個(gè)靜態(tài)NodeList 類型的對象
  • selectors 是一個(gè)由逗號連接的包含一個(gè)或多個(gè)CSS選擇器的字符串
2. jQuery
核心API
  • jQuery()返回匹配的元素集合,無論是通過在DOM的基礎(chǔ)上傳遞的參數(shù)還是創(chuàng)建一個(gè)HTML字符串醇锚。
    jQuery( selector [, context ] )

    jQuery( selector [, context ] )
    jQuery( element )
    jQuery( elementArray )
    jQuery( object )
    jQuery( jQuery object )
    jQuery()
    

    jQuery( html [, ownerDocument ] )

    jQuery( html [, ownerDocument ] )
    jQuery( html, attributes )
    

    jQuery( callback )

    jQuery( callback )
    
向上遍歷 DOM 樹
  • .parent([selector])
    如果提供的jQuery代表了一組DOM元素焊唬,.parent()方法允許我們能夠在DOM樹中搜索到這些元素的父級元素看靠,從有序的向上匹配元素,并根據(jù)匹配的元素創(chuàng)建一個(gè)新的 jQuery 對象
    親自試一試
  • .parents([selector])
    如果提供的jQuery代表了一組DOM元素鸥滨,.parents()方法允許我們能夠在DOM樹中搜索到這些元素的祖先元素谤祖,從有序的向上匹配元素,并根據(jù)匹配的元素創(chuàng)建一個(gè)新的 jQuery 對象;返回的元素秩序是從離他們最近的父級元素開始的(注:從里到外的順序)凸主。當(dāng)多個(gè)DOM元素在原有集合中容客,返回的集合將是原來元素以相反的順序排序约郁, 并且重復(fù)刪除但两。
    親自試一試
  • .parentsUntil( [selector ] [, filter ] )
    如果提供一個(gè)jQuery對象代表DOM元素集合, .parentsUntil() 方法會(huì)找遍所有這些元素的前輩元素绽快,直到遇到了跟參數(shù)匹配的元素才會(huì)停止紧阔。返回的jQuery對象中包含了所有找到的前輩元素,除了與 .parentsUntil() 選擇器匹配的那個(gè)元素活孩。如果提供的選擇器沒有匹配到任何元素乖仇,或者沒有提供選擇器,那么所有的祖先元素都會(huì)被選中起趾。其效果與沒有提供參數(shù)的.parents()方法是一樣的
    親自試一試
向下遍歷 DOM 樹
  • .children( [selector ] )
    鑒于一個(gè)jQuery對象警儒,表示一個(gè)DOM元素的集合,.children()方法允許我們通過在DOM樹中對這些元素的直接子元素進(jìn)行搜索边琉,并且構(gòu)造一個(gè)新的匹配元素的jQuery對象蝙茶。.find().children()方法是相似的,但后者只是針對向下一個(gè)級別的DOM樹钳恕。還要注意的是和大多數(shù)的jQuery方法一樣蹄衷,.children()不返回文本節(jié)點(diǎn);讓所有子元素包括使用文字和注釋節(jié)點(diǎn),建議使用.contents()睦番。
    親自試一試
  • .find( selector )
    如果一個(gè)jQuery對象表示一個(gè)DOM元素的集合, .find()方法允許我們能夠通過查找DOM樹中的這些元素的后代元素巩检,匹配的元素將構(gòu)造一個(gè)新的jQuery對象示启。.find()和.children()方法是相似的,但后者只是再DOM樹中向下遍歷一個(gè)層級(注:就是只查找子元素迟螺,而不是后代元素)舍咖。
    .find()方法還可以接受一個(gè)選擇器表達(dá)式,該選擇器表達(dá)式可以是任何可傳給$()函數(shù)的選擇器表達(dá)式排霉。如果緊隨兄弟匹配選擇器郑诺,它將被保留在新構(gòu)建的jQuery對象中杉武;否則,它被排除在外飞涂。
    親自試一試
在 DOM 樹中水平遍歷
  • .siblings( [selector ] )
    如果提供的jQuery代表了一組DOM元素祈搜,.siblings()方法通過這些元素組合傳遞到方法構(gòu)造一個(gè)新的jQuery對象。
    該方法選擇性地接受同一類型選擇器表達(dá)式梁呈,我們可以傳遞給$()函數(shù)蘸秘。如果提供了選擇器表達(dá)式,那么會(huì)先測試該元素是否滿足匹配的選擇器表達(dá)式寻咒。
    親自試一試
  • .next( [selector ] )
    如果一個(gè)jQuery代表了一組DOM元素颈嚼, .next()方法允許我們找遍元素集合中緊跟著這些元素的直接兄弟元素,并根據(jù)匹配的元素創(chuàng)建一個(gè)新的 jQuery 對象叫挟。
    該方法還可以接受一個(gè)可選的選擇器表達(dá)式,該選擇器表達(dá)式可以是任何可傳給 $() 函數(shù)的選擇器表達(dá)式旬薯。如果每個(gè)元素的直接兄弟元素滿足所提供的選擇器适秩,那么它會(huì)保存在新生成的 jQuery 對象中,否則秽荞,不會(huì)包含該元素扬跋。
    親自試一試
  • .nextAll( [selector ] )
    如果一個(gè)jQuery對象代表了一組DOM元素,.nextAll()方法允許我們在DOM樹上遍歷所有元素的后繼元素钦听,并且構(gòu)建一個(gè)新的匹配元素的jQuery對象朴上。
    該方法還可以接受一個(gè)可選的選擇器表達(dá)式,該選擇器表達(dá)式可以是任何可傳給 $() 函數(shù)的選擇器表達(dá)式叼架。如果供應(yīng)選擇器參數(shù)衣撬,那么會(huì)先測試該元素是否滿足匹配的選擇器表達(dá)式。
    親自試一試
  • .nextUntil( [selector ] [, filter ] )
    如果提供一個(gè)選擇器表達(dá)式代表DOM元素集合具练,.nextUntil() 方法會(huì)查找這些元素所在的DOM樹中跟在它們后面的元素扛点,直到遇到了一個(gè)跟提供的參數(shù)匹配的元素的時(shí)候才會(huì)停下來。新返回的 jQuery 對象里包含了后面所有找到的兄弟元素昔善,但不包括那個(gè)選擇器匹配到的元素畔乙。
    如果沒有選擇器匹配到,或者沒有提供參數(shù)返咱,那么跟在后面的所有同輩元素都會(huì)被選中。這就跟用沒有提供參數(shù)的 .nextAll()效果一樣咖摹。
    親自試一試
  • prev(), prevAll() & prevUntil()方法的工作方式與上面的方法類似萤晴,只不過方向相反而已:它們返回的是前面的同胞元素(在 DOM 樹中沿著同胞元素向后遍歷,而不是向前)店读。
3. Vue
  • ref被用來給元素或子組件注冊引用信息屯断。引用信息將會(huì)注冊在父組件的 $refs 對象上。如果在普通的 DOM 元素上使用殖演,引用指向的就是 DOM 元素趴久;如果用在子組件上,引用就指向組件實(shí)例:

    <!-- vm.$refs.p will be the DOM node -->
    <p ref="p">hello</p>
    
    <!-- vm.$refs.child will be the child comp instance -->
    <child-comp ref="child"></child-comp>
    

    當(dāng) v-for 用于元素或組件的時(shí)候已添,引用信息將是包含 DOM 節(jié)點(diǎn)或組件實(shí)例的數(shù)組滥酥。
    關(guān)于 ref 注冊時(shí)間的重要說明:因?yàn)?ref 本身是作為渲染結(jié)果被創(chuàng)建的畦幢,在初始渲染的時(shí)候你不能訪問它們 -
    它們還不存在!$refs 也不是響應(yīng)式的瘦真,因此你不應(yīng)該試圖用它在模板中做數(shù)據(jù)綁定黍瞧。

4. React
  • Refs
    React支持一個(gè)可以附加到任何組件的特殊屬性refref屬性可以是一個(gè)字符串或一個(gè)回調(diào)函數(shù)您机。當(dāng)ref屬性是一個(gè)回調(diào)函數(shù)時(shí),函數(shù)接收底層DOM元素或類實(shí)例(取決于元素的類型)作為參數(shù)咸产。這使你可以直接訪問DOM元素或組件實(shí)例仲闽。

    不要過度使用 Refs。如果你發(fā)現(xiàn)自己經(jīng)常在應(yīng)用程序中使用refs來“搞事情”屑彻,請考慮使用狀態(tài)提升顶吮。

  • findDOMNode()

    ReactDOM.findDOMNode(component)
    

    如果這個(gè)組件已經(jīng)被掛載到DOM中,函數(shù)會(huì)返回對應(yīng)的瀏覽器中生成的DOM元素 膳沽。你需要從DOM中讀取值時(shí)让禀,比如表單的值,或者計(jì)算DOM元素的尺寸痛阻,這個(gè)函數(shù)會(huì)非常有用腮敌。大多數(shù)情況下,你可以添加一個(gè)指向DOM節(jié)點(diǎn)的引用弊添,從而完全避免使用findDOMNode 這個(gè)函數(shù). 當(dāng) render 返回 null 或者 false 時(shí), findDOMNode 也返回 null.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末油坝,一起剝皮案震驚了整個(gè)濱河市刨裆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞬女,老刑警劉巖努潘,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異渤刃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)略号,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門玄柠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诫舅,“玉大人,你說我怎么就攤上這事这弧⌒檠矗” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵蛋辈,是天一觀的道長将谊。 經(jīng)常有香客問我尊浓,道長,這世上最難降的妖魔是什么眠砾? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任褒颈,我火速辦了婚禮励堡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刨疼。我一直安慰自己,他們只是感情好亭畜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布迎卤。 她就那樣靜靜地躺著蜗搔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪樟凄。 梳的紋絲不亂的頭發(fā)上缝龄,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音瞎饲,去河邊找鬼百新。 笑死,一個(gè)胖子當(dāng)著我的面吹牛饭望,可吹牛的內(nèi)容都是我干的铅辞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼苇倡,長吁一口氣:“原來是場噩夢啊……” “哼囤踩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起综慎,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤示惊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后米罚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體录择,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拔莱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糊肠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辨宠。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖货裹,靈堂內(nèi)的尸體忽然破棺而出嗤形,到底是詐尸還是另有隱情,我是刑警寧澤弧圆,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布赋兵,位于F島的核電站,受9級特大地震影響搔预,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拯田,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一历造、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧船庇,春花似錦吭产、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至窃爷,卻和暖如春邑蒋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背按厘。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工医吊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逮京。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓遮咖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親造虏。 傳聞我的和親對象是個(gè)殘疾皇子御吞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 通過jQuery,您可以選壤炫骸(查詢陶珠,query)HTML元素,并對它們執(zhí)行“操作”(actions)享钞。 jQuer...
    枇杷樹8824閱讀 657評論 0 3
  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關(guān)注...
    程序員poetry閱讀 16,646評論 18 503
  • DOM創(chuàng)建節(jié)點(diǎn)及節(jié)點(diǎn)屬性 通過JavaScript可以很方便的獲取DOM節(jié)點(diǎn)揍诽,從而進(jìn)行一系列的DOM操作。但實(shí)際上...
    阿r阿r閱讀 1,018評論 0 9
  • 第1章 簡介 第2章 DOM節(jié)點(diǎn)的創(chuàng)建 2-1 DOM創(chuàng)建節(jié)點(diǎn)及節(jié)點(diǎn)屬性 通過JavaScript可以很方便的獲...
    mo默22閱讀 816評論 0 8
  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點(diǎn)的復(fù)制與替換 (1)DOM拷貝clone() 克隆節(jié)點(diǎn)是DOM的常...
    凜0_0閱讀 1,342評論 0 8