jQuery Manipulation 主要是用來操作 DOM 元素的新增、刪除與修改等。
變更元素內容 (Changing Contents)
.html():取得或變更元素內容,這個功能類似 JavaScript 中的 innerHTML
.text():取得或變更元素內容(純文字)
改變元素內容
.replaceWith():removes content from the DOM and replaces it with something
$("h2").replaceWith("Page Title
"); //使用標籤取式
標籤
插入元素 (Inserting)
.append():將指定的元素插入到集合中的元素(內部插入)
.prepend():在每個匹配的元素內部最前面加入(內部插入)
.before():在每個匹配的元素前面加入(外部插入)
.after():在每個匹配的元素後面加入(外部插入)
插入1
插入2
.appendTo():將集合中的元素插入指定的元素中,做為最後的子元素
.prependTo():將集合中的元素插入指定的元素中,當做最前的子元素
.insertBefore():將集合中的元素插入到指定元素之前
.insertAfter():將集合中的元素插入到指定元素之後
appendTo插入
prependTo插入
移動元素 (moving)
同樣使用上面的函式,若參數值是一個 「jQuery」或「DOM」物件,則代表移動它們:
Hello
Hi
將 Hello 移到 Hi 裡面的後頭
$("#hi").append($("#hello"));
將 Hello 移到 Hi 裡面的前頭
$("#hi").prepend($("#hello"));
將 Hello 移到 Hi 前面
$("#hi").before($("#hello"));
將 Hello 移到 Hi 後面
$("#hi").after($("#hello"));
包裹元素 (wraping)
.wrap():Wrap an HTML structure around each element in the set of matched elements.
Hello
Hello
$("#Span1, #Span2").wrap("");
Hello
Hello
其他相關的方法還有:
$(X).wrapAll(Y):將所有 X 元素集中在一起並用一個Y包起來
$(X).wrapInner(Y):將 X 的子元素用 Y 包起來
$(X).replaceWith(Y):將 X 置換成 Y
$(X).replaceAll(Y):以 X 去置換 Y
刪除元素 (Removing)
.empty():Remove all child nodes of the set of matched elements from the DOM.
Hello, Personand person
$("p").empty(); //結果:
.remove():Remove the set of matched elements from the DOM.
Hello
how areyou ?
$("p").remove(); //結果:how are
.detach():removes the found elements from the DOM.
複製元素 (Copying)
.clone():Create a deep copy of the set of matched elements.
這個方法預設不會複製資料和事件,如果須要,必須將 withDataAndEvents 參數設成 true 。
☆
Hello
$("#copy").click(
function () {
$("#cp2").after($("#cp1").clone()); //結果: ☆ Hello ☆
}
);
暫建物件
jQuery 共用方法
以下是幾個 jQuery 所提供的好用函式:
jQuery.browser:偵測瀏覽器版本
用以偵測瀏覽器版本,它是一個物件,會有 safari、opera、msie、mozilla 及 version 五個屬性,前四個屬性依瀏覽器不同,只有一個屬性會傳回 true,其餘都傳回 false,而 version 則會傳回版號。
jQuery.support:判斷瀏覽器的支援度
由於使用 jQuery.browser的做法意味著我們要寫死何種瀏覽器支援哪些功能,一旦瀏覽器改版或特性改變時就要修校,因此從 jQuery 1.3 起,jQuery 核心不再用 jQuery.browser判斷決定不同的做法,而是一律由 jQuery.support.* 傳回 true/flase 判斷瀏覽器的支援度,目前可測試的瀏覽器特性包含了: boxModel、cssFloat、hrefNormalized、htmlSerialize、leadingWhitespace、noCloneEvent、objectAll、opacity、scriptEval、style、tbody。但基於向前相容,jQuery.browser 仍會持續存在。
jQuery.each():逐一處理 array 中的各元素
jQuery.extend():將物件內容合併。
列舉集合物件
首先要知道的是, .each()和 jQuery.each()是不同的。 前者是 jQuery 物件的列舉,用來列舉某個 jQuery 物件中的元素。 後者是用來列舉集合或陣列中的元素。
jQuery.each()方法,可以讓我們逐一處理 array 或 obj 集合中的各元素。 若在 each 中 return false 時,若尚未處理到的其他陣列元素/物件屬性則略過不處理
- jQuery.each(array, function() { ... })
將 array 的各元素逐一送給 callback 函數處理,函數中以 this取得陣列元素內容。 - jQuery.each(object, function(i, val) { ... })
逐一傳入集合物件中各屬性的名稱 (i) 以及值 (val) 給 callback 函數處理。
[例一]
下面範例,我們在一個 div 中,加入4個不同顏色的小 div 。
});
[例二]
合併物件內容
jQuery.extend():將物件內容合併。
jQuery.extend(obj1, obj2[, obj3]):
這個方法會將後面的物件 (obj2, obj3, ...) 的屬性合併到 obj1 中(若同名屬性存在則覆寫之),很常用於指定參數的預設值,例如: