attr( name )
取得第一個匹配元素的屬性值。通過這個方法可以方便地從第一個匹配元素中獲取一個屬性的值。如果元素沒有相應屬性,則返回 undefined 。 返回文檔中第一個圖像的src屬性值:將一個“名/值”形式的對象設置為所有匹配元素的屬性。
這是一種在所有匹配元素中批量設置很多屬性的最佳方式。 注意,如果你要設置對象的class屬性,你必須使用'className' 作為屬性名。或者你可以直接使用.addClass( class ) 和 .removeClass( class ).
為所有圖像設置src和alt屬性:為所有匹配的元素設置一個計算的屬性值。
不提供值,而是提供一個函數,由這個函數計算的值作為屬性值。
把src屬性的值設置為title屬性的值:addClass( classes )
為每個匹配的元素添加指定的類名。 為匹配的元素加上 'selected' 類:每三次點擊切換高亮樣式:
var count = 0;
$("p").click(function(){
$(this).toggleClass("highlight", count++ % 3 == 0);
});
使用上面的方法, 我們可以將元素的CSS類像集合一樣修改, 再也不必手工解析字符串.
注意 addClass( class ) 和removeClass( [classes] ) 的參數可以一次傳入多個css類, 用空格分割,比如:
$("#btnAdd").bind("click", function(event) { $("p").addClass("colorRed borderBlue"); });
removeClass方法的參數可選, 如果不傳入參數則移除全部CSS類:
$("p").removeClass()
同樣當我們想要修改元素的具體某一個CSS樣式,即修改元素屬性"style"時, jQuery也提供了相應的方法:
名稱 說明 實例 css( name ) 訪問第一個匹配元素的樣式屬性。 取得第一個段落的color樣式屬性的值:$("p").css("color");
css( properties )把一個“名/值對”對象設置為所有匹配元素的樣式屬性。
這是一種在所有匹配的元素上設置大量樣式屬性的最佳方式。
將所有段落的字體顏色設為紅色並且背景為藍色:在所有匹配的元素中,設置一個樣式屬性的值。
數字將自動轉化為像素值
將所有段落字體設為紅色:$("p").css("color","red");
雖然我們可以通過獲取屬性,特性以及CSS樣式來取得元素的幾乎所有信息, 但是注意下面的實驗:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>獲取對象寬度</title> <script type="text/javascript" src="scripts/jquery-1.3.2-vsdoc2.js"></script> <script type="text/javascript"> $(function() { alert("attr(\"width\"):" + $("#testDiv").attr("width")); //undifined alert("css(\"width\"):" + $("#testDiv").css("width")); //auto(ie6) 或 1264px(ff) alert("width():" + $("#testDiv").width()); //正確的數值1264 alert("style.width:" + $("#testDiv")[0].style.width ); //空值 }) </script> </head> <body> <div id="testDiv"> 測試文本</div> </body> </html>
我們希望獲取測試圖層的寬度, 使用attr方法獲取"元素特性"為undifined, 因為並沒有為div添加width. 而使用css()方法雖然可以獲取到style屬性的值, 但是在不同浏覽器裡返回的結果不同, IE6下返回auto, 而FF下雖然返回了正確的數值但是後面帶有"px". 所以jQuery提供了width()方法, 此方法返回的是正確的不帶px的數值.
針對上面的問題, jQuery為常用的屬性提供了獲取和設置的方法, 比如width()用戶獲取元素的寬度, 而 width(val)用來設置元素寬度.
下面這些方法可以用來獲取元素的常用屬性值:
$("p").height(20);
width( ) 取得第一個匹配元素當前計算的寬度值(px)。 獲取第一段的寬:為每個匹配的元素設置CSS寬度(width)屬性的值。
如果沒有明確指定單位(如:em或%),使用px。
將所有段落的寬設為 20:$("p").width(20);
innerHeight( )獲取第一個匹配元素內部區域高度(包括補白、不包括邊框)。
此方法對可見和隱藏元素均有效。
獲取第一個匹配元素內部區域寬度(包括補白、不包括邊框)。
此方法對可見和隱藏元素均有效。
獲取第一個匹配元素外部高度(默認包括補白和邊框)。
此方法對可見和隱藏元素均有效。
獲取第一個匹配元素外部寬度(默認包括補白和邊框)。
此方法對可見和隱藏元素均有效。
關於在獲取長寬的函數中, 要區別"inner", "outer"和height/width這三種函數的區別:
outerWith可以接受一個bool值參數表示是否計算margin值.
相信此圖一目了然各個函數所索取的范圍. 圖片以width為例說明的, height的各個函數同理.
另外在一些設計套彈出對象的腳本中,常常需要動態獲取彈出坐標並且設置元素的位置.
但是很多的計算位置的方法存在著浏覽器兼容性問題, jQuery中為我們提供了位置相關的各個函數:
名稱 說明 舉例 offset( )獲取匹配元素在當前窗口的相對偏移。
返回的對象包含兩個整形屬性:top 和 left。此方法只對可見元素有效。
獲取第二段的偏移:var p = $("p:last");
var offset = p.offset();
p.html( "left: " + offset.left + ", top: " + offset.top );
position( )
獲取匹配元素相對父元素的偏移。
返回的對象包含兩個整形屬性:top 和 left。為精確計算結果,請在補白、邊框和填充屬性上使用像素單位。此方法只對可見元素有效。
獲取第一段的偏移:var p = $("p:first");
var position = p.position();
$("p:last").html( "left: " + position.left + ", top: " + position.top );
scrollTop( )
獲取匹配元素相對滾動條頂部的偏移。
此方法對可見和隱藏元素均有效。
獲取第一段相對滾動條頂部的偏移:var p = $("p:first");
$("p:last").text( "scrollTop:" + p.scrollTop() );
scrollTop( val )
傳遞參數值時,設置垂直滾動條頂部偏移為該值。
此方法對可見和隱藏元素均有效。
設定垂直滾動條值:$("div.demo").scrollTop(300);
scrollLeft( )
獲取匹配元素相對滾動條左側的偏移。
此方法對可見和隱藏元素均有效。
獲取第一段相對滾動條左側的偏移:var p = $("p:first");
$("p:last").text( "scrollLeft:" + p.scrollLeft() );
scrollLeft( val )
傳遞參數值時,設置水平滾動條左側偏移為該值。
此方法對可見和隱藏元素均有效。
設置相對滾動條左側的偏移:$("div.demo").scrollLeft(300);
本篇文章主要講解如何使用jQuery操作元素的屬性和修改樣式. 請大家主要注意元素屬性和DOM屬性的區別. 下一篇文章將講解最重要的事件, 介紹如何綁定事件, 操作事件對象等.
作者:張子秋
出處:http://www.cnblogs.com/zhangziqiu/