jQuery中的DOM操作

對(duì)DOM的操作包插:增蟆沫、刪歉秫、改蛾洛、查。

使用jQuery查找節(jié)點(diǎn)非常容易雁芙,通過(guò)jQuery選擇器完成轧膘。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jQuery/jquery-3.1.0.js"></script>
</head>
<body>
  <p title="選擇你最喜歡的水果.">你最喜歡的水果是?</p>
  <ul>
    <li title='蘋(píng)果'>蘋(píng)果</li>
    <li title='桔子'>桔子</li>
    <li title='菠蘿'>菠蘿</li>
  </ul>
</body>
</html>


var $li = $("ul li:eq(1)");
var li_txt = $li.text();

使用以上2條語(yǔ)句就能查找ul里第2個(gè)li元素兔甘,然后獲取這個(gè)li元素的文本內(nèi)容谎碍。

var $para = $("p");
var p_txt = $para.attr("title");

使用以上2條語(yǔ)句就能查找p元素,然后獲取這個(gè)元素里的title屬性內(nèi)容洞焙。

創(chuàng)建節(jié)點(diǎn)也很簡(jiǎn)單:$(html)蟆淀,使用這條語(yǔ)句就能創(chuàng)建節(jié)點(diǎn)。比如

$("<li></li>")澡匪,

這樣就創(chuàng)建了li元素節(jié)點(diǎn)扳碍。只是在DOM操作中創(chuàng)建節(jié)點(diǎn)還不夠,如果想要在網(wǎng)頁(yè)中顯示了來(lái)仙蛉,還需要將創(chuàng)建的節(jié)點(diǎn)插入到網(wǎng)頁(yè)DOM中笋敞。

  • append(),向每個(gè)匹配的元素內(nèi)部追加內(nèi)容
  • appendTo()荠瘪,將所有匹配的元不追加到指定的元素中
  • prepend()夯巷,向每個(gè)匹配的元素內(nèi)部前置內(nèi)容
  • prependTp(),將所有匹配的元素前置到指定的元素中
  • after(), 在每個(gè)構(gòu)配的元素之后插入內(nèi)容
  • insertAfter(), 將所有匹配的元素插入到指定元素的后面
  • before()哀墓,在每個(gè)匹配的元素之前插入內(nèi)容
  • insertBefore()趁餐,將所有匹配的元素插入到指定的元素之前

jQuery提供了3種刪除元素的方法,分別是remove,detach,empty篮绰。

  • remove()后雷, 作用是從DOM中刪除所匹配的元素,傳入的參數(shù)用于根據(jù)jQuery表達(dá)式來(lái)篩選元素吠各。
$("ul li:eq(1)").remove()//獲取第2個(gè)li元素后臀突,將它從網(wǎng)頁(yè)中刪除

當(dāng)某個(gè)節(jié)點(diǎn)用remove方法刪除后,該節(jié)點(diǎn)所包含的后代節(jié)點(diǎn)將同時(shí)刪除贾漏。這個(gè)方法返回值是一個(gè)指向已被刪除的節(jié)點(diǎn)的引用候学,因此還可以在以后再使用這些元素。

remove方法還可以接收參數(shù)來(lái)選擇性地刪除元素

$("ul li").remove("li[title!=菠蘿]");//將li元素中屬性title不等于i波蘿的li元素刪除
  • detach(),用法和remove一樣纵散,但是區(qū)別就是所有邦定的事件梳码、附加的數(shù)據(jù)等都保留下來(lái)隐圾,而remove方法之前綁定的事件會(huì)失效。

  • empty()掰茶, 這個(gè)方法只是清空節(jié)點(diǎn)暇藏,能清空節(jié)點(diǎn)元素的所有后代節(jié)點(diǎn)。

    $("ul li:eq(1)").empty();//獲取第2個(gè)li元素節(jié)點(diǎn)后濒蒋,清空此元素的內(nèi)容叨咖。

用上面的語(yǔ)句清空節(jié)點(diǎn)之后,元素里的內(nèi)容清除了啊胶,但是li元素還是在文檔中的甸各。

jQuery中還可以使用chone方法復(fù)制節(jié)點(diǎn)。

$("ul li").click(function(){
  $(this).clone(true).appendTo("ul");
});

clone方法接收一個(gè)bool類(lèi)型參數(shù)焰坪,如果為false或?yàn)榭毡硎静粡?fù)制所綁定的事件趣倾,如果為true則表示復(fù)印事件。

jQuery提供了2個(gè)替換節(jié)點(diǎn)的方法:replaceWith()和replaceAll()某饰。

$("p").replaceWith("<strong>你最不喜歡的水果是</strong>");

replaceAll和replaceWith作用相同儒恋,只是顛倒了操作后者的操作。替換后黔漂,原節(jié)點(diǎn)的事件會(huì)消失诫尽。

jQuery提供3個(gè)包裹節(jié)點(diǎn)的方未能。所謂的包裹節(jié)點(diǎn)意思是原來(lái)的html是這樣:<p>測(cè)試</p>炬守,現(xiàn)在想在p元素之外加上div變成這樣:<div><p>測(cè)試</p></div>牧嫉,這就是把p節(jié)點(diǎn)用div元素包裹了。

這3個(gè)方法分別為:wrap(), wrapAll(),wrapInner()减途。

像上面這個(gè)例子就可以這么寫(xiě):

$("p").wrap("<div></div>");

wrapAll會(huì)把所有匹配的節(jié)點(diǎn)用一個(gè)標(biāo)簽包裹起來(lái)酣藻,而wrap會(huì)把所在匹配的節(jié)點(diǎn)單獨(dú)包裹一個(gè)標(biāo)簽。

wrapInner會(huì)把匹配的節(jié)點(diǎn)里的的子元素用包裹起來(lái)

$("p").wrapInner("<div></div>")

產(chǎn)生的結(jié)果就是

<p><div>測(cè)試</div></p>

對(duì)DOM節(jié)點(diǎn)的增刪改查差不多就以上這些鳍置。接下來(lái)講講對(duì)具體的節(jié)點(diǎn)的操作辽剧。

  • 獲取屬性和設(shè)置屬性
var $para = $("p);
var p_txt = $para.attr("title");

以上代碼獲取屬性,如果要設(shè)置性性也用這個(gè)方法只是需要傳入多個(gè)參數(shù)。

$("p").attr("title", "your title");

如果要一次性設(shè)置多個(gè)屬性税产,則傳入一個(gè)對(duì)象怕轿。

$("p").attr({"title" : "your title", "name" : "your name" });

刪除屬性使用removeAttr方法

$("p").removeAttr("title");

如果我們另外定義了一個(gè)class樣式,那么也可以用attr方法來(lái)設(shè)置節(jié)點(diǎn)的class辟拷,間接設(shè)置了樣式撞羽。但是attr方法只能替換樣式,如果要追加樣式那就需要用jQuery另外給我們提供的方法:addClass()

$("p").addClass("another")

如果p元素原來(lái)有一個(gè)樣式梧兼,那么就會(huì)再添加一個(gè)放吩,而不會(huì)替換智听。

同樣也可以移除樣式

$("p").removeClass("another")

如果要移除多個(gè)樣式羽杰,那么每個(gè)class名移增加空格就可以

$("p").removeClass("one another")

同時(shí)移除了one 和 another兩個(gè)樣式渡紫。

jQuery還提供了切換樣式的方法:toggleClass();如果這個(gè)方法里傳遞的class已經(jīng)存在則刪除它,如果不存在則添加它.

$("p").toggleClass("another")

如果another樣式不存在考赛,則和addClass效果一樣惕澎;如果已經(jīng)存在,則和removeClass效果一樣颜骤。

如果要判斷一個(gè)樣式是不是存在就要調(diào)用hasClass()方法唧喉,返回值為true或false

$("p").hasClass("another");

接下來(lái)介紹jQuery中的如果獲取html,文本的方法忍抽,比如網(wǎng)頁(yè)上有如下的節(jié)點(diǎn):

<p title="選擇你最喜歡的水果"><strong>選擇你最喜歡的水果是八孝?</strong></p>

然后用html()方法進(jìn)行操作

var p_html =  $("p").html();
alert(p_html);

那么會(huì)顯示<strong>選擇你最喜歡的水果是?</strong>這一段話鸠项。

如果把html方法替換成text方法干跛,則會(huì)顯示選擇你最喜歡的水果是?這一段話祟绊。

html和text方法如果傳遞進(jìn)參數(shù)楼入,則表示把元素設(shè)置成參數(shù)里的字符串。

如查要獲取各種表單元素的值牧抽,可以使用jQuery的val()方法嘉熊。

$("this").val();//其中this表示一個(gè)文本框或者密碼框
$("this").val("設(shè)置元素");

跟html(),text()方法一樣也可以設(shè)置或者獲取文本框或密碼框的值。

val方法還可以獲取下拉列表扬舒,單選框的值阐肤,如果元素為多選,則返回一個(gè)包含所有選擇的值的數(shù)組讲坎。

要設(shè)置下拉列表的選項(xiàng):

$("#single").val("選擇值");

設(shè)置多選框的值:

$("#multiple").val(["choise1","choise2"]);//以數(shù)組的形式賦值

同樣泽腮,設(shè)置多選框和單選框:

$(":checkbox").val(["check1","check2"]);
$(":radio").val(["radio2"]);

選擇一個(gè)節(jié)點(diǎn),如果要獲取這個(gè)節(jié)點(diǎn)的子元素的集合衣赶,可以使用jQuery的children()方法诊赊。

var $ul = $("ul").children();

這個(gè)方法只考濾子元素而不考慮子元素下面的元素,返回的是一個(gè)jQuery對(duì)象的數(shù)組府瞄。

獲取某個(gè)節(jié)點(diǎn)相鄰的下一個(gè)節(jié)點(diǎn)使用next()方法碧磅。

獲取某個(gè)節(jié)點(diǎn)相鄰的前一個(gè)節(jié)點(diǎn)使用prev()方法。

獲取前后所有的同輩節(jié)點(diǎn)使用siblings()方法

closest()方法用于獲取最近的匹配元素遵馆。首先查找自身是否匹配鲸郊,如果匹配直接返回自身,如果不匹配則向上查找父元素货邓,逐級(jí)向上查找直到匹配為止秆撮,如果都不匹配則返回空。

parent()方法返回每個(gè)匹配元素的父級(jí)元素
parents()方法返回匹配元素的所有祖先元素

css()方法可以直接讀取和設(shè)置節(jié)點(diǎn)中的樣式换况。

$("p").css("color");//獲取p元素的顏色职辨。
$("p").css("color", "red");//設(shè)置p元素的顏色為紅色盗蟆。

如果設(shè)置css樣式時(shí)的值為數(shù)字,則會(huì)直接轉(zhuǎn)化為像素值舒裤。css中的一些屬性帶有-符號(hào)喳资,比如background-color,設(shè)置時(shí)可以寫(xiě)成background-color或者backgroundColor腾供。

獲取元素的高度或者寬度可以使用以下兩種方法:

$("element").css("height");
$("element").height();

兩者的區(qū)別是第1種方法設(shè)置的高度與樣式設(shè)置有關(guān)仆邓,可能會(huì)得到auto或者15px之類(lèi)的字符串,而height()方未能獲取的高度是元素在頁(yè)面中的實(shí)際高度伴鳖。

與height()方法相對(duì)應(yīng)的是width()方法节值。這2個(gè)方法獲取到的是數(shù)字且不帶單位,單位都是像素也就是px榜聂。

jQuery還提供獲取元素所在位置的功能:offset()和position()方法

var offset = $("p").offset();//當(dāng)前元素在當(dāng)前窗口的偏移量
var left = offset.left;//獲取左偏移量
var top = offset.top;//獲取上偏移量


var position = $("p").position();//當(dāng)前元素在最近一個(gè)position樣式屬性設(shè)置為relative或者absolute父節(jié)點(diǎn)的相對(duì)偏移
var left = position.left;
var top = position,top;

scrollTop()和scrollLeft()方法獲取元素的滾動(dòng)條距頂端和距左端的距離察署,如果指定一個(gè)參數(shù),可以控制元素的滾動(dòng)條滾動(dòng)到指定位置峻汉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贴汪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子休吠,更是在濱河造成了極大的恐慌扳埂,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘤礁,死亡現(xiàn)場(chǎng)離奇詭異阳懂,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)柜思,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)岩调,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人赡盘,你說(shuō)我怎么就攤上這事号枕。” “怎么了陨享?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵葱淳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我抛姑,道長(zhǎng)赞厕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任定硝,我火速辦了婚禮皿桑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己诲侮,他們只是感情好镀虐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著浆西,像睡著了一般粉私。 火紅的嫁衣襯著肌膚如雪顽腾。 梳的紋絲不亂的頭發(fā)上近零,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音抄肖,去河邊找鬼久信。 笑死,一個(gè)胖子當(dāng)著我的面吹牛漓摩,可吹牛的內(nèi)容都是我干的裙士。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼管毙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼腿椎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起夭咬,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啃炸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后卓舵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體南用,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年掏湾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裹虫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡融击,死狀恐怖筑公,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尊浪,我是刑警寧澤十酣,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站际长,受9級(jí)特大地震影響耸采,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜工育,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一虾宇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧如绸,春花似錦嘱朽、人聲如沸旭贬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)稀轨。三九已至,卻和暖如春岸军,著一層夾襖步出監(jiān)牢的瞬間奋刽,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工艰赞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留佣谐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓方妖,卻偏偏與公主長(zhǎng)得像狭魂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子党觅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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

  • jQuery中的DOM操作 DOM操作的分類(lèi) 一般來(lái)說(shuō)DOM的操作分為3個(gè)方面雌澄,即DOM Core、HTML-DO...
    AuthorJim閱讀 387評(píng)論 0 1
  • DOM(Document Object Model)意思是文檔對(duì)象模型杯瞻。根據(jù)W3C DOM規(guī)范镐牺,DOM是一種與瀏覽...
    東東少將閱讀 446評(píng)論 0 1
  • JQuery中的DOM操作 一種與瀏覽器,平臺(tái)又兵,語(yǔ)言無(wú)關(guān)的接口任柜。使用該接口可以輕松地訪問(wèn)頁(yè)面中所有的標(biāo)準(zhǔn)組件。DO...
    王閑森閱讀 165評(píng)論 0 0
  • 老友發(fā)來(lái)微信說(shuō)沛厨,明天是我最后一輪兵檢了宙地,如果過(guò)了我就去當(dāng)兵了,有機(jī)會(huì)的話我會(huì)選擇留在部隊(duì)逆皮,以后都不會(huì)回來(lái)了宅粥。 我說(shuō)...
    有故事的周同學(xué)閱讀 970評(píng)論 5 6
  • 2015-12-23 華杉 君子不跟人結(jié)黨。君子沒(méi)有盟友电谣,沒(méi)有“利益共同體”秽梅,沒(méi)有“一致行動(dòng)人”。因?yàn)榫拥脑瓌t是...
    郁萍閱讀 220評(píng)論 0 0