接著上一篇繼續(xù)...
創(chuàng)新互聯(lián)建站長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為沅陵企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站制作,沅陵網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
針對(duì)通過(guò)修改元素的HTML方法來(lái)達(dá)到修改元素內(nèi)容,jQuery提供了多種方法來(lái)實(shí)現(xiàn)。
1、替換HTML或文本內(nèi)容
html() | 獲取匹配集里第一個(gè)元素的HTML內(nèi)容。返回第一個(gè)已匹配元素的HTML內(nèi)容。返回值與訪問(wèn)那個(gè)元素的innerHTML屬性所獲得的內(nèi)容一致。 |
這個(gè)應(yīng)該不用解釋了,我們都學(xué)習(xí)了那么多方法了。
html(text) | 把傳入的HTML片段設(shè)置為所有匹配元素的內(nèi)容。返回包裝集。 |
text | (字符串)將被設(shè)置為元素內(nèi)容的HTML片段 |
另外也可以只獲取或設(shè)置元素的文本內(nèi)容。
text() | 把包裝集里元素的所有文本內(nèi)容連接起來(lái),并返回字符串作為命令的結(jié)果。返回連接而成的字符串。 |
舉個(gè)例子:有如下HTML片段。
One Two Three Four
var text = $("#theList").text();
則text的結(jié)果是OneTwoThreeFour。
text(content) | 把所有已包裝元素的文本內(nèi)容設(shè)置為已傳遞值。如果已傳遞文本包含尖括號(hào)(<和>),則這些字符被替換為等價(jià)的HTML實(shí)體。返回包裝集。 |
content | (字符串)將要設(shè)置到已包裝元素里的文本內(nèi)容。任何尖括號(hào)字符將被轉(zhuǎn)義為HTML實(shí)體。 |
需要說(shuō)明的是,無(wú)論用html()還是text()都是對(duì)原先內(nèi)容的覆蓋,所以使用前必須確認(rèn)好。
2、移動(dòng)和復(fù)制元素
append(content) | 把傳入的HTML片段或元素追加到所有已匹配元素的內(nèi)容之后。返回包裝集。 |
content | (字符串|元素|對(duì)象)將被追加到包裝集各元素的一個(gè)字符串、元素或包裝集。 |
舉例說(shuō)明:
$("p").append("some text");
這句比較簡(jiǎn)單,就是表示在所有
元素后面追加新的HTML片段。下面是稍稍復(fù)雜的用法。
$("p.sugar").append($("a.ant"));
這表示什么呢?在帶有類.sugar的所有
元素后面追加帶有類ant的鏈接。這里的追加有點(diǎn)說(shuō)道。如果append里的是單一元素,那么將該元素從原來(lái)的位置上刪除掉,移動(dòng)到新的父元素下。如果是多個(gè)元素,即是一個(gè)內(nèi)容大于等于1的集合,那么在原來(lái)位置保留的情況下,會(huì)在新的父元素下追加集合中的副本。
前者可以理解為移動(dòng)操作,后者則是復(fù)制操作。
如果不想追加整個(gè)包裝集,也可以單獨(dú)追加一個(gè)特定的DOM元素。如:
var toAppend = $("a.ant")[0]; $("p.sugar").append(toAppend);
這種情況下對(duì)于追加的toAppend是所謂的移動(dòng)還是復(fù)制,要取決于$("p.sugar")的元素?cái)?shù)量(注意:與上面的例子不同,上面是取決于追加元素的數(shù)量)。如果匹配一個(gè)元素進(jìn)行移動(dòng)操作。多個(gè),則進(jìn)行復(fù)制操作。
還有更簡(jiǎn)單的方法:
appendTo(target) | 把包裝集里所有元素移動(dòng)到指定目標(biāo)的內(nèi)容的末尾。返回包裝集。 |
target | (字符串|元素)一個(gè)包含jQuery選擇器的字符串,或一個(gè)DOM元素。包裝集各元素將追加到target所指定的那個(gè)位置。 |
同樣的,如果target只匹配一個(gè)元素,則是移動(dòng),如果是多個(gè)元素,則是復(fù)制。
再介紹幾個(gè)工作方式類似于append和appendTo的方法。
prepend()和prependTo()表示在目標(biāo)元素的內(nèi)容之前插入源元素,而不是之后。
before()和insertBefore()表示在目標(biāo)元素之前插入元素,而不是在目標(biāo)元素的第一個(gè)子元素之前。
after()和insertAfter()表示目標(biāo)元素之后插入元素,而不是在目標(biāo)元素的最后一個(gè)子元素之后。
3、包裹元素
什么叫包裹元素呢?妹的,看書讀文字把我都搞成漿糊了還沒(méi)弄明白所謂的包裹元素,又沒(méi)有例子是弄哪樣?我才不會(huì)這么不負(fù)責(zé)任。
wrap(wrapper) | 把匹配集各元素用已傳遞HTML標(biāo)簽或已傳遞元素的克隆副本分別包裹起來(lái)。 |
wrapper | (字符串|元素)用于包裹匹配集各元素的元素開(kāi)始和結(jié)束標(biāo)簽;或者一個(gè)將被克隆且用作包裹器的元素。 |
舉個(gè)例子:
$("a.surprise").wrap("");
上面的例子就是對(duì)應(yīng)紫色的部分,把頁(yè)面上所有帶有類surprise的鏈接外面套層帶有類hello的
最后頁(yè)面上的情況可能就是這樣的。
... one two three ... 轉(zhuǎn)換后 ... ...
另一種形式呢?舉個(gè)例子,用頁(yè)面上第一個(gè)
$("a.surprise").wrap($("div:first")[0]);
就是這個(gè)樣子啦。包裝后的結(jié)果就是頁(yè)面上第一個(gè)
有的時(shí)候我們不想包裹匹配集里的元素,而想包裹元素的內(nèi)容。那么就用下面的方法。
wrapInner(wrapper) | 用已傳遞元素的克隆副本或已傳遞HTML標(biāo)簽,把匹配集各元素的內(nèi)容(包括文本節(jié)點(diǎn))分別包裹起來(lái)。 |
wrapper | 同上 |
對(duì)于包裹,說(shuō)實(shí)話我真沒(méi)用過(guò),不過(guò)據(jù)說(shuō)是會(huì)經(jīng)常用到,我寫的jQuery代碼也太少了,哈哈。
4、刪除元素
remove() | 從頁(yè)面DOM里刪除包裝集里所有元素。返回包裝集。 |
需要說(shuō)明的是從DOM里刪除的元素仍然被該包裝集引用著,所以可以進(jìn)一步用其他 jQuery命令去操作。如appendTo()、insertBefore()等類似命令。
empty() | 清空匹配集里所有DOM元素的內(nèi)容。返回包裝集。 |
5、克隆元素
clone(copyHandlers) | 創(chuàng)建包裝集里元素的副本,并返回包含這些副本的新包裝集。返回新建的包裝集。 |
copyHandlers | (布爾型)如果為true,復(fù)制事件處理程序;如果為false或省略,則不復(fù)制事件處理程序。 |
通常情況下都是我們克隆完一個(gè)包裝集之后都是利用jQuery命令把其附加到DOM中的某個(gè)地方。
對(duì)于表單元素,我們最常見(jiàn)的操作是:存取表單元素值。
val() | 返回匹配集里第一個(gè)元素的value特性。如果是多選元素,則返回所有選中項(xiàng)的數(shù)組。返回已獲取的值或值數(shù)組 |
對(duì)于這個(gè)命令我們有幾個(gè)需要注意的地方
(1)如果包裝集里第一個(gè)元素不是表單元素,就會(huì)拋出javascript錯(cuò)誤。
(2)不會(huì)區(qū)分復(fù)選框和單選按鈕的選中或非選中狀態(tài),而是返回復(fù)選框或單選按鈕的value特性值,不管其選中與否。
對(duì)于單選按鈕,val雖然看起來(lái)有點(diǎn)雞肋,但是如果我們結(jié)合上jQuery選擇器之后,結(jié)果就不一樣了,舉個(gè)例子:如果想獲取一組包含名為radioGroup的單選按鈕組中選中按鈕的值,那么我們可以這樣。
$("[name=radioGroup]:checked").val();
這樣可以很好的達(dá)到效果。但是對(duì)于復(fù)選框的話,我們就要想別的辦法了。
val(value) | 把傳入的值設(shè)置為所有已匹配表單元素的值。 |
value | 一個(gè)字符串,用于設(shè)置包裝集里各表單元素的value屬性值。 |
同樣,這個(gè)方法也有局限性,就是不能把多個(gè)值設(shè)置到多選列表中去。另一種重載變體
val(values) | 導(dǎo)致包裝集里任何復(fù)選框、單選按鈕或 |
values | 一個(gè)值數(shù)組,用于確定哪些元素將被選中或選擇。 |
舉例說(shuō)明:把頁(yè)面上所有和
$("input, select").val(['ironman','superman','spiderman']);
其實(shí)到目前為止,我們就已經(jīng)能用jQuery做許多事情了,不過(guò)這些都是比較“隱蔽”的,如果想來(lái)些效果的話,那我們還得接下來(lái)的學(xué)習(xí)。
關(guān)于jQuery的學(xué)習(xí)系列筆記我寫的會(huì)比較簡(jiǎn)潔,更注重的是快速上手使用,當(dāng)然,非常重要的知識(shí)點(diǎn)我還是會(huì)專門指出的。
PS:歡迎留言交流,24小時(shí)內(nèi)必有回復(fù)。