您好,登錄后才能下訂單哦!
接著上一篇繼續...
針對通過修改元素的HTML方法來達到修改元素內容,jQuery提供了多種方法來實現。
1、替換HTML或文本內容
html() | 獲取匹配集里第一個元素的HTML內容。返回第一個已匹配元素的HTML內容。返回值與訪問那個元素的innerHTML屬性所獲得的內容一致。 |
這個應該不用解釋了,我們都學習了那么多方法了。
html(text) | 把傳入的HTML片段設置為所有匹配元素的內容。返回包裝集。 |
text | (字符串)將被設置為元素內容的HTML片段 |
另外也可以只獲取或設置元素的文本內容。
text() | 把包裝集里元素的所有文本內容連接起來,并返回字符串作為命令的結果。返回連接而成的字符串。 |
舉個例子:有如下HTML片段。
<ulid="theList"> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> </ul>
var text = $("#theList").text();
則text的結果是OneTwoThreeFour。
text(content) | 把所有已包裝元素的文本內容設置為已傳遞值。如果已傳遞文本包含尖括號(<和>),則這些字符被替換為等價的HTML實體。返回包裝集。 |
content | (字符串)將要設置到已包裝元素里的文本內容。任何尖括號字符將被轉義為HTML實體。 |
需要說明的是,無論用html()還是text()都是對原先內容的覆蓋,所以使用前必須確認好。
2、移動和復制元素
append(content) | 把傳入的HTML片段或元素追加到所有已匹配元素的內容之后。返回包裝集。 |
content | (字符串|元素|對象)將被追加到包裝集各元素的一個字符串、元素或包裝集。 |
舉例說明:
$("p").append("<b>some text</b>");
這句比較簡單,就是表示在所有<p>元素后面追加新的HTML片段。下面是稍稍復雜的用法。
$("p.sugar").append($("a.ant"));
這表示什么呢?在帶有類.sugar的所有<p>元素后面追加帶有類ant的鏈接。這里的追加有點說道。如果append里的是單一元素,那么將該元素從原來的位置上刪除掉,移動到新的父元素下。如果是多個元素,即是一個內容大于等于1的集合,那么在原來位置保留的情況下,會在新的父元素下追加集合中的副本。
前者可以理解為移動操作,后者則是復制操作。
如果不想追加整個包裝集,也可以單獨追加一個特定的DOM元素。如:
var toAppend = $("a.ant")[0]; $("p.sugar").append(toAppend);
這種情況下對于追加的toAppend是所謂的移動還是復制,要取決于$("p.sugar")的元素數量(注意:與上面的例子不同,上面是取決于追加元素的數量)。如果匹配一個元素進行移動操作。多個,則進行復制操作。
還有更簡單的方法:
appendTo(target) | 把包裝集里所有元素移動到指定目標的內容的末尾。返回包裝集。 |
target | (字符串|元素)一個包含jQuery選擇器的字符串,或一個DOM元素。包裝集各元素將追加到target所指定的那個位置。 |
同樣的,如果target只匹配一個元素,則是移動,如果是多個元素,則是復制。
再介紹幾個工作方式類似于append和appendTo的方法。
prepend()和prependTo()表示在目標元素的內容之前插入源元素,而不是之后。
before()和insertBefore()表示在目標元素之前插入元素,而不是在目標元素的第一個子元素之前。
after()和insertAfter()表示目標元素之后插入元素,而不是在目標元素的最后一個子元素之后。
3、包裹元素
什么叫包裹元素呢?妹的,看書讀文字把我都搞成漿糊了還沒弄明白所謂的包裹元素,又沒有例子是弄哪樣?我才不會這么不負責任。
wrap(wrapper) | 把匹配集各元素用已傳遞HTML標簽或已傳遞元素的克隆副本分別包裹起來。 |
wrapper | (字符串|元素)用于包裹匹配集各元素的元素開始和結束標簽;或者一個將被克隆且用作包裹器的元素。 |
舉個例子:
$("a.surprise").wrap("<div class='hello'></div>");
上面的例子就是對應紫色的部分,把頁面上所有帶有類surprise的鏈接外面套層帶有類hello的<div>標簽。
最后頁面上的情況可能就是這樣的。
... <a class="surprise"> one</a> <a class="surprise"> two</a> <a class="surprise"> three</a> ... 轉換后 ... <div class="hello"> <a class="surprise"> one</a> </div> <div class="hello"> <a class="surprise"> two</a> </div> <div class="hello"> <a class="surprise"> three</a> </div> ...
另一種形式呢?舉個例子,用頁面上第一個<div>元素的克隆副本分別包裹各鏈接
$("a.surprise").wrap($("div:first")[0]);
就是這個樣子啦。包裝后的結果就是頁面上第一個<div>元素是什么樣子的,包裹在各鏈接上的<div>就是什么樣子的。
有的時候我們不想包裹匹配集里的元素,而想包裹元素的內容。那么就用下面的方法。
wrapInner(wrapper) | 用已傳遞元素的克隆副本或已傳遞HTML標簽,把匹配集各元素的內容(包括文本節點)分別包裹起來。 |
wrapper | 同上 |
對于包裹,說實話我真沒用過,不過據說是會經常用到,我寫的jQuery代碼也太少了,哈哈。
4、刪除元素
remove() | 從頁面DOM里刪除包裝集里所有元素。返回包裝集。 |
需要說明的是從DOM里刪除的元素仍然被該包裝集引用著,所以可以進一步用其他 jQuery命令去操作。如appendTo()、insertBefore()等類似命令。
empty() | 清空匹配集里所有DOM元素的內容。返回包裝集。 |
5、克隆元素
clone(copyHandlers) | 創建包裝集里元素的副本,并返回包含這些副本的新包裝集。返回新建的包裝集。 |
copyHandlers | (布爾型)如果為true,復制事件處理程序;如果為false或省略,則不復制事件處理程序。 |
通常情況下都是我們克隆完一個包裝集之后都是利用jQuery命令把其附加到DOM中的某個地方。
對于表單元素,我們最常見的操作是:存取表單元素值。
val() | 返回匹配集里第一個元素的value特性。如果是多選元素,則返回所有選中項的數組。返回已獲取的值或值數組 |
對于這個命令我們有幾個需要注意的地方
(1)如果包裝集里第一個元素不是表單元素,就會拋出javascript錯誤。
(2)不會區分復選框和單選按鈕的選中或非選中狀態,而是返回復選框或單選按鈕的value特性值,不管其選中與否。
對于單選按鈕,val雖然看起來有點雞肋,但是如果我們結合上jQuery選擇器之后,結果就不一樣了,舉個例子:如果想獲取一組包含名為radioGroup的單選按鈕組中選中按鈕的值,那么我們可以這樣。
$("[name=radioGroup]:checked").val();
這樣可以很好的達到效果。但是對于復選框的話,我們就要想別的辦法了。
val(value) | 把傳入的值設置為所有已匹配表單元素的值。 |
value | 一個字符串,用于設置包裝集里各表單元素的value屬性值。 |
同樣,這個方法也有局限性,就是不能把多個值設置到多選列表中去。另一種重載變體
val(values) | 導致包裝集里任何復選框、單選按鈕或<select>元素的選項變為已選中(checked)或已選擇(selected)狀態,只要它們的值和已傳遞值數組的任何一個值相匹配。 |
values | 一個值數組,用于確定哪些元素將被選中或選擇。 |
舉例說明:把頁面上所有<input>和<select>元素,只要它們的值里和輸入字符串ironman、superman、spiderman中任何一個相匹配。那么如果匹配的是復選框或單選按鈕將變為已選中狀態,如果是<select>則變為已選擇狀態。
$("input, select").val(['ironman','superman','spiderman']);
其實到目前為止,我們就已經能用jQuery做許多事情了,不過這些都是比較“隱蔽”的,如果想來些效果的話,那我們還得接下來的學習。
關于jQuery的學習系列筆記我寫的會比較簡潔,更注重的是快速上手使用,當然,非常重要的知識點我還是會專門指出的。
PS:歡迎留言交流,24小時內必有回復。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。