前面的話
每個元素都有一個或者多個特性,這些特性的用途就是給出相應元素或者其內容的附加信息。操作特性的DOM方法主要有3個:getAttribute()方法、setAttribute()方法和removeAttribute()方法,而在jQuery中用一個attr()與removeAttr()就可以全部搞定了,包括兼容問題。本文將介紹jQuery中的特性操作
獲取特性
jQuery中用attr()方法來獲取和設置特性,attr是attribute(特性)的縮寫,在jQuery DOM操作中會經常用到attr()方法
attr(attributeName)
attr(傳入特性名):獲取特性的值,相當于DOM中的getAttribute()
<div id="test"></div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>console.log(test.getAttribute('id'));//'test' console.log($('#test').attr('id'));//'test'</script> [注意]attr()方法只獲取第一個匹配元素的屬性值。要獲取每個單獨的元素的屬性值,我們依靠jQuery的.each()或者.map()方法循環
<div class="test" id="ele1">元素一</div><div class="test" id="ele2">元素二</div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>console.log($('.test').attr('id'));//'test'$('.test').each(function(index) { console.log(index+":"+$(this).attr('id'));//'1:ele1 2:ele2'});</script>prop()
屬性(property)和特性(attribute)是不同的。屬性是DOM節點的屬性,而特性是HTML標簽的特性
[注意]關于屬性和特性的區別的詳細信息移步至此
<div id="test" data="abc"></div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>test.data = 123;//IE8-瀏覽器返回123,其他瀏覽器返回'abc'console.log(test.getAttribute('data'))console.log(test.data)//123//IE8-瀏覽器返回123,其他瀏覽器返回'abc'console.log($('#test').attr('data'))console.log($('#test').prop('data'))//123</script>由上面代碼可知,jQuery并沒有解決低版本IE瀏覽器屬性和特性混淆的問題
設置特性
設置特性雖然依然使用attr()方法,但卻有3種方式
【1】attr(attributeName,value)
attr(特性名, 特性值):設置特性的值,相當于DOM中的setAttribute()
<div id="test"></div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>test.setAttribute('title','abc');console.log(test.getAttribute('title'))//'abc'$('#test').attr('title','123'); console.log($('#test').attr('title'));//'123'</script>jQuery禁止改變一個<input>或<button>元素的type特性,會靜默失敗。因為IE8-不會允許改變<input>或者<button>元素的type特性,靜默失敗
新聞熱點
疑難解答
圖片精選