一、區分DOM屬性和元素屬性
對於下面這樣一個標簽元素:
<img id='img' src="images/image.1.jpg" alt='1' class="imgs"></img>
我們通常將id、src、alt、class稱為屬性,也即元素屬性。但是,當浏覽器對標簽元素進行解析時,會將元素解析為Dom對象,相應的,元素屬性也就解析為Dom屬性,兩者是有區別的。
元素屬性 和 Dom屬性 只是在我們對其進行不同解析時的不同稱呼。
值得注意的是:
1.元素被解析成Dom時,元素屬性和Dom屬性並不一定是原來的名稱;
例如,img的class屬性,在表現為元素屬性時是class;在表現為Dom屬性時,屬性名為className。
2.雖然我們設置了元素的src是相對路徑:images/image.1.jpg,但是在“DOM屬性”中都會轉換成絕對路徑:
http://localhost/images/image.1.jpg。
3.在JavaScript中,我們可以直接獲取或設置Dom屬性:
<script type="text/javascript">
$(function() {
var img1 = document.getElementById("hibiscus");
alert(img1.alt);
img1.alt = "Change the alt element attribute";
alert(img1.alt);
})
</script>
所以如果要設置元素的CSS樣式類,要使用的是DOM屬性“className”而不是元素屬性class:
img1.className = "classB";
二、操作“DOM屬性”
在jQuery中沒有包裝操作"DOM屬性"的函數, 因為使用javascript獲取和設置"DOM屬性"都很簡單. 在jQuery提供了each()函數用於遍歷jQuery包裝集,其中的this指針是一個DOM對象,所以我們可以應用這一點配合原生 JavaScript來操作元素的DOM屬性:
$("img").each(function(index) {
alert("index:" + index + ", id:" + this.id + ", alt:" + this.alt);
this.alt = "changed";
alert("index:" + index + ", id:" + this.id + ", alt:" + this.alt);
});
下面是each函數的說明:
each( callback ) Returns: jQuery包裝集
對包裝集中的每一個元素執行callback方法, 其中callback方法接受一個參數, 表示當前遍歷的索引值,從0開始。