鋒利的jQuery——讀書筆記三 jQuery中的DOM操作

DOM操作的分類

1.DOM Core

DOM Core 不屬于Javascript免糕,任何一種支持DOM 的程序設(shè)計(jì)語(yǔ)言都可以使用它恰响。

Javascript 中的以下方法都是DOM Core 的組成部分

getElementsByTagName()  
getElementById()
getAttribute()
setAttribute()

2.HTML-DOM

提供了一些更簡(jiǎn)明的記號(hào)來(lái)描述各種HTML 元素斥杜,但是只能用來(lái)處理Web文檔
eg:

document.froms;   //HTML-DOM 提供了一個(gè)forms對(duì)象 獲取表單對(duì)象

element.src     //獲取元素src屬性

3.CSS-DOM

針對(duì)CSS的操作试躏,作用主要是獲取和設(shè)置 style 對(duì)象的各種屬性

jQuery中的DOM操作

1.查找節(jié)點(diǎn)

  • 查找元素節(jié)點(diǎn)裆装,也就是我們之前所說(shuō)的選擇器产禾,通過(guò)各種選擇器明棍,選出我們需要操作的節(jié)點(diǎn)

  • 查找屬性節(jié)點(diǎn)乡革,通過(guò) jQuery 選擇器查找到元素后,可以使用attr() 方法來(lái)獲取和設(shè)置元素摊腋,當(dāng)參數(shù)為一個(gè)時(shí)(需要查詢的屬性名)為獲取元素沸版,當(dāng)參數(shù)為兩個(gè)時(shí),為設(shè)置元素屬性值兴蒸。

eg:

var  pText = $('p').attr('title');  //獲取元素的title值
$('p').attr('title','這是設(shè)置的title值');  //設(shè)置元素的title值
以下我都用一個(gè)例子說(shuō)明

DOM結(jié)構(gòu):

<table id="table" cellspacing="0" border="l" cellpadding="5" width="500">
    <thead>
        <tr>
          <th>水果</th>
          <th>價(jià)格</th>
          <th>Operation     <a class="clearAll" href="#">清空表格</a></th>
        </tr>
    </thead>
    <tbody>
        <tr>
          <td class="Tom">蘋果</td>
          <td>18</td>
          <td><a class="del"  href="#">刪除</a> | <a class="addUp" href="#">向上添加一行</a> | <a class="addDown" href="#">向下添加一行</a></td>
        </tr>
        <tr>
          <td>橘子</td>
          <td>18</td>
          <td><a class="del"  href="#">刪除</a> | <a class="addUp" "  href="#">向上添加一行</a> | <a class="addDown" href="#">向下添加一行</a> | <a class="moveLast" href="#">置底</a></td>
        </tr>
        <tr>
          <td>香蕉</td>
          <td>18</td>
          <td><a class="del"  href="#">刪除</a> | <a class="addUp"  href="#">向上添加一行</a> | <a class="addDown" href="#">向下添加一行</a> |  <a class="moveFirst" href="#">置頂</a></td>
        </tr>
        <tr >
          <td><span>菠蘿</span></td>
          <td>18</td>
          <td><a class="del"  href="#">刪除</a> | <a class="addUp"  href="#">向上添加一行</a> | <a class="addDown" href="#">向下添加一行</a> | <a class="blod" href="#">加粗</a></td>
        </tr>
    </tbody>
</table>
Paste_Image.png

2.創(chuàng)建節(jié)點(diǎn)

創(chuàng)建節(jié)點(diǎn)是使用jQuery 工廠函數(shù) $() 來(lái)完成

  • $(html);
  • 優(yōu)點(diǎn): 支持復(fù)雜视粮,帶文本,屬性的html代碼
  • eg橙凳,創(chuàng)建一個(gè)表格的一行
var newTr = $('<tr><td>草莓</td><td>18</td><td>這是添加的一行</td></tr>');

//為了方便易讀蕾殴,可以寫成以下
var newTr = $('<tr>'
          +   '<td>草莓</td>'
          +   '<td>18</td>'
          +   '<td>這是添加的一行</td>'
          +   '</tr>');

3.插入節(jié)點(diǎn)

3.1 append 與 appendTo
  • **append() **向每個(gè)匹配的元素追加內(nèi)容笑撞,在當(dāng)前操作的元素內(nèi)部尾部追加內(nèi)容。$(A).append(B);把B元素追加到A中

  • ** appendTo()** ,$(A).appendTo(B); 把A追加到B中

例子中的置底操作就用了钓觉,先在當(dāng)前點(diǎn)擊的元素的父元素中找到 tr 元素茴肥,在把當(dāng)前行插入到tbody 的尾部

//置底操作
$('.moveLast').on('click', function(event) {
   var $tr =  $(this).parents('tr');
   $tr.appendTo('tbody');
//等價(jià)與
$('tobdy').append($tr);
});
置底.gif
3.2 prepend 與 prependTo
  • **prepend() **向每個(gè)匹配的元素前置內(nèi)容,在當(dāng)前操作的元素內(nèi)部頭部追加內(nèi)容荡灾。$(A).prepend(B);把B元素前置到A中

  • ** prependTo()** ,$(A).prependTo(B); 把A前置到B中

例子中的置頂操作就用了炉爆,先在當(dāng)前點(diǎn)擊的元素的父元素中找到 tr 元素,在把當(dāng)前行插入為tbody 的第一個(gè)元素

// 置頂操作
$('.moveFirst').on('click', function(event) {
    var $tr =  $(this).parents('tr');
    $tr.prependTo('tbody');
    // 等價(jià)于
    $('tbody').prependTo($tr);
});
置頂.gif
3.3 after 與 insertAfter
  • **after() **向每個(gè)匹配的元素之后插入內(nèi)容卧晓,在當(dāng)前元素外部芬首。$(A).insert(B);把B元素插入到A之后

  • ** prependTo()** ,$(A).insertAfter(B); 把A插入到B元素后面

例子中的向下插入一行用到了這個(gè)方法,先創(chuàng)建元素newTr 逼裆,再插入到當(dāng)前行之后

//向下添加一行
$('.addDown').on('click', function(event) {
    var newTr = $('<tr><td>草莓</td><td>18</td><td>這是添加的一行</td></tr>');
    var $tr =  $(this).parents('tr');

    newTr.insertAfter($tr);
    //等價(jià)于 
    $tr.after(newTr);
});
向下插入行.gif
3.4 before 與 insertBefore
  • **before() **向每個(gè)匹配的元素之后插入內(nèi)容郁稍,在當(dāng)前元素外部。$(A).insert(B);把B元素插入到A之前

  • ** prependTo()** ,$(A).insertAfter(B); 把A插入到B元素前面

例子中的向上插入一行用到了這個(gè)方法胜宇,先創(chuàng)建元素newTr 耀怜,再插入到當(dāng)前行之前

4. 刪除節(jié)點(diǎn)

remove() 從DOM中刪除所有匹配的元素,可以通過(guò)傳遞參數(shù)桐愉,選擇性刪除

detach() ,與romove 相同都是刪除元素财破,detach 刪除的元素保存后再次使用時(shí),所有綁定的事件嗎从诲、附加的數(shù)據(jù)都會(huì)保留下來(lái)左痢。

empty是清空節(jié)點(diǎn)

//刪除操作
$('.del').on('click', function(event) {
    $(this).parents('tr').remove();
});
//刪除全部
$('.clearAll').on('click', function(event) {
    $('tbody').empty();
});
remove 和 empty.gif

5.復(fù)制節(jié)點(diǎn)

clone(),不帶參數(shù)的去執(zhí)行復(fù)制操作,復(fù)制的元素節(jié)點(diǎn)是不帶事件的

clone(true), 復(fù)制元素的同時(shí)復(fù)制元素中所綁定的事件

6.包裹節(jié)點(diǎn)

wrapAll() ,所有匹配的元素用一個(gè)元素來(lái)包裹

wrap(),方法將所有的元素進(jìn)行單獨(dú)的包裹

wrapInner()系洛,方法將每一個(gè)匹配元素的子內(nèi)容包裹起來(lái)

//加粗 元素包裹 當(dāng)前行就會(huì)全部加粗
$('.blod').on('click', function(event) {
    $(this).parents('tr').find('td').wrapInner('<b></b>');
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末俊性,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子描扯,更是在濱河造成了極大的恐慌定页,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绽诚,死亡現(xiàn)場(chǎng)離奇詭異典徊,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)恩够,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門卒落,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人玫鸟,你說(shuō)我怎么就攤上這事导绷。” “怎么了屎飘?”我有些...
    開(kāi)封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵妥曲,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我钦购,道長(zhǎng)檐盟,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任押桃,我火速辦了婚禮葵萎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘唱凯。我一直安慰自己羡忘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布磕昼。 她就那樣靜靜地躺著卷雕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪票从。 梳的紋絲不亂的頭發(fā)上漫雕,一...
    開(kāi)封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音峰鄙,去河邊找鬼浸间。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吟榴,可吹牛的內(nèi)容都是我干的魁蒜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吩翻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼梅惯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起仿野,我...
    開(kāi)封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤铣减,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后脚作,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體葫哗,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年球涛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了劣针。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亿扁,死狀恐怖捺典,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情从祝,我是刑警寧澤襟己,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布引谜,位于F島的核電站,受9級(jí)特大地震影響擎浴,放射性物質(zhì)發(fā)生泄漏员咽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一贮预、第九天 我趴在偏房一處隱蔽的房頂上張望贝室。 院中可真熱鬧,春花似錦仿吞、人聲如沸滑频。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)峡迷。三九已至,卻和暖如春务傲,著一層夾襖步出監(jiān)牢的瞬間凉当,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工售葡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留看杭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓挟伙,卻偏偏與公主長(zhǎng)得像楼雹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尖阔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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

  • 第1章 簡(jiǎn)介 第2章 DOM節(jié)點(diǎn)的創(chuàng)建 2-1 DOM創(chuàng)建節(jié)點(diǎn)及節(jié)點(diǎn)屬性 通過(guò)JavaScript可以很方便的獲...
    mo默22閱讀 802評(píng)論 0 8
  • DOM創(chuàng)建節(jié)點(diǎn)及節(jié)點(diǎn)屬性 通過(guò)JavaScript可以很方便的獲取DOM節(jié)點(diǎn)贮缅,從而進(jìn)行一系列的DOM操作。但實(shí)際上...
    阿r阿r閱讀 1,007評(píng)論 0 9
  • 一介却、樣式篇 第1章 初識(shí)jQuery (1)環(huán)境搭建 進(jìn)入官方網(wǎng)站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,358評(píng)論 0 44
  • 學(xué)習(xí)不是一蹴而就谴供,每天學(xué)習(xí)一點(diǎn),驀然回首齿坷,你會(huì)發(fā)現(xiàn)自己已成功邁出一大步 ~ず(に) 續(xù)接: 動(dòng)詞【ない形】+ず(に...
    甘蔗狂人閱讀 653評(píng)論 0 0
  • 16字原則永淌,24字戰(zhàn)略崎场,統(tǒng)統(tǒng)圍繞8字方針,第一認(rèn)真第二聰明遂蛀,學(xué)好谭跨,了解,懂用,才是真道理螃宙。
    踏雪無(wú)痕sdf閱讀 120評(píng)論 0 0