jQuery獲取和操作元素的屬性和CSS樣式


本文學習如何使用jQuery獲取和操作元素的屬性和CSS樣式.

元素屬性和Dom屬性

 對於下面這樣一個標簽元素:

<img id='img' src="1.jpg" alt='1' class="imgs"></img

我們通常將id,src,alt,class稱為屬性,也即元素屬性.但是,當瀏覽器對標簽元素進行解析時,會將元素解析為Dom對象,相應的,元素屬性也就解析為Dom屬性.

元素屬性和Dom屬性只是在我們對其進行不同解析時的不同稱呼.

值得注意的是:

1.元素被解析成Dom時,元素屬性和Dom屬性並不一定是原來的名稱.

例如,img的class屬性,在表現為元素屬性時是class;在表現為Dom屬性時,屬性名為className

2.在JavaScript中,我們可以直接獲取或設置Dom屬性

使用jQuery操作元素屬性

在jQuery中,提供了attr函數來操作元素屬性,具體如下:

函數名 說明 例子
attr(name) 取得第一個匹配元素的屬性值.
$("input").attr("value")
attr(property) 將一個"名/值"形式的對象設置為所有匹配元素的屬性
$("input").attr({ value: "txt", title: "text" });
attr(key,value) 所有匹配的元素設置一個屬性值
$("input").attr("value","txt");
attr(key,fn) 所有匹配的元素設置一個計算的屬性值
$("input").attr("title", function () { return this.value });
removeAttr(name) 所有匹配的元素中刪除一個屬性
$("input").removeAttr("value");

注意:

1.如果要設置對象的class屬性時,必須使用className作為屬性名.

2.我們可以使用removeAttr刪除元素屬性,但其對應的Dom屬性是不會被刪除掉的,只是被改變其值而已

根據上面的幾個函數,我們可以這樣使用來獲取dom的value值和innerHTML值:

$("#txt1").attr("value") $("#txt1").attr("value", "1234"); $("#dv1").attr("innerHTML", 'this is a div'); $("#dv1").attr("innerHTML");

實際上,jQuery提供了更簡單的方法來訪問value,innerHTML,具體函數如下:

函數名 說明 例子
val() 獲取第一個匹配元素的value值
$("#txt1").val()
val(val) 為匹配的元素設置value值
$("#txt1").val("txt1")
html() 獲取第一個匹配元素的html內容
$("#dv1").html()
html(val) 設置每一個匹配的元素的html內容
$("#dv1").html("this is a div")
text() 取得所有匹配文本節點的內容,並將其連接起來
$("div").text()
text(val) 將所有匹配元素的置為val
$("div").text("divs")

使用jQuery操作CSS

1.修改CSS類

函數名 說明 例子
addClass(classes) 每個匹配的元素添加指定的類名
$("input").addClass("colorRed borderBlack");
hasClass(class) 判斷匹配元素集合中是否至少有一個包含了指定的css類,如果有一個含有指定css類,則返回true
alert($("input").hasClass("borderBlack"));
removeClass([classes]) 從匹配元素中移除所有或指定的css類
$("input").removeClass("colorRed borderBlack");
toggleClass(classes) 如果存在(不存在)就刪除(添加)指定類
$("input").toggleClass("colorRed borderBlack");
toggleClass(classes,switch) 當switch是true時,添加類,switch為false時,刪除類
$("input").toggleClass("colorRed borderBlack", true);

注意:

1.addClass、removeClass、toggleClass均可添加多個類,多個類之間用空格隔開

2.removeClass方法的參數可選,如果有參數,則刪除指定class,如果無參數,則刪除匹配元素的所有class

3.在調用toggleClass(classes,switch)時,我們可以有更多的用法,例如:

//每當按鈕被點擊三次時,添加樣式
var i = 0; $("#btn").click(function () { $("input").toggleClass("colorRed borderBlack", true); });

2.修改CSS樣式

函數名 說明 例子
css(name) 訪問第一個匹配元素的樣式屬性
$("input").css("color")
css(properties) 把一個"名/值"對設置給所有匹配元素的樣式屬性
$("input").css({border:"solid 3px silver",color:"red"})
css(name,value) 為匹配的元素設置同一個樣式屬性
如果是數字,將自動轉換為像素值
$("input").css("border-width","5");

注意:

對於樣式值為數字的代碼示例及結果:

示例 生成的源碼
$("input").css("border-width","5");
<input style="BORDER-RIGHT-WIDTH: 5px; BORDER-TOP-WIDTH: 5px; BORDER-BOTTOM-WIDTH: 5px; BORDER-LEFT-WIDTH: 5px" id="txt1" />

注意:

對於一些常用的屬性,例如width,height之類,使用attr("width")和css("width")是無法正常獲取其值的,現在,我們來介紹一些常用的屬性.

獲取常用的屬性

1.寬、高相關

函數名 說明 例子
width() 獲取第一個匹配元素的寬度,默認為px
$("#txt1").width()
width(val) 為匹配的元素設置寬度值,默認為px
$("#txt1").width(200)
height() 獲取第一個匹配元素的高度,默認為px
$("#txt1").height()
height(val) 為匹配的元素設置寬度值,默認為px
$("#txt1").height(20)
innerWidth() 獲取第一個匹配元素內部區域寬度(包括padding,不包括border)
$("#txt1").innerWidth()
innerHeight() 獲取第一個匹配元素內部區域高度(包括padding,不包括border)
$("#txt1").innerHeight()
outerWidth([margin]) 獲取第一個匹配元素外部區域寬度(包括padding,border)
margin為true則包括margin,否則不包括
$("#txt1").outerWidth()
outerHeight([margin]) 獲取第一個匹配元素外部區域高度(包括padding,border)
margin為true則包括margin,否則不包括
$("#txt1").outerHeight(true)

注意:

返回的高度、寬度均為數字,不帶px

參照一張圖,會更容易理解些.

image

2.位置相關

在設計一些彈出對象的腳本中,經常需要動態獲取彈出坐標並且設置元素的位置.jQuery為我們提供了位置相關的各個函數.

函數名 說明 例子
offset() 獲取匹配元素在當前窗口的相對偏移
只對可見元素有效
$("#btn").offset().top
$("#btn").offset().left
position() 獲取匹配元素相對父元素的偏移
只對可見元素有效
$("#btn").position().top
$("#btn").position().left
scrollTop() 獲取匹配元素相對滾動條頂部的偏移
對可見元素和隱藏元素均有效
$("div").scrollTop()
scrollTop(val) 設置垂直滾動條頂部偏移為該值
對可見元素和隱藏元素均有效
$("div").scrollTop(200)
scrollLeft() 獲取匹配元素相對滾動條左部的偏移
對可見元素和隱藏元素均有效
$("div").scrollLeft()
scrollLeft(val) 設置水平滾動條左側的偏移
對可見元素和隱藏元素均有效
$("div").scrollLeft(200)

注意:

offset方法是相對於當前窗口的相對偏移,而position方法是相對於父元素的偏移


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM