jQuery 特性操作詳解及實(shí)例代碼
前面的話
每個(gè)元素都有一個(gè)或者多個(gè)特性,這些特性的用途就是給出相應(yīng)元素或者其內(nèi)容的附加信息。操作特性的DOM方法主要有3個(gè):getAttribute()方法、setAttribute()方法和removeAttribute()方法,而在jQuery中用一個(gè)attr()與removeAttr()就可以全部搞定了,包括兼容問題。本文將介紹jQuery中的特性操作
獲取特性
jQuery中用attr()方法來獲取和設(shè)置特性,attr是attribute(特性)的縮寫,在jQuery DOM操作中會經(jīng)常用到attr()方法
attr(attributeName)
attr(傳入特性名):獲取特性的值,相當(dāng)于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()方法只獲取第一個(gè)匹配元素的屬性值。要獲取每個(gè)單獨(dú)的元素的屬性值,我們依靠jQuery的.each()或者.map()方法循環(huán)
<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節(jié)點(diǎn)的屬性,而特性是HTML標(biāo)簽的特性
[注意]關(guān)于屬性和特性的區(qū)別的詳細(xì)信息移步至此
<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瀏覽器屬性和特性混淆的問題
設(shè)置特性
設(shè)置特性雖然依然使用attr()方法,但卻有3種方式
【1】attr(attributeName,value)
attr(特性名, 特性值):設(shè)置特性的值,相當(dāng)于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禁止改變一個(gè)<input>或<button>元素的type特性,會靜默失敗。因?yàn)镮E8-不會允許改變<input>或者<button>元素的type特性,靜默失敗
<input id="test" type="text">
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
test.setAttribute('type','button');
$('#test').attr('type','button');
</script>
【2】attr(attributes)
attr(attributes):給指定元素設(shè)置多個(gè)特性值,即{特性名一: “特性值一”,特性名二:“特性值二”,…}
當(dāng)設(shè)置多個(gè)特性,包裹特性名的引號是可選的
<div id="test"></div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
test.setAttribute('title','abc');
test.setAttribute('a','abc');
console.log(test.getAttribute('title'))//'abc'
console.log(test.getAttribute('a'))//'abc'
$('#test').attr({
title: '123',
a: '123'
});
console.log($('#test').attr('title'));//'123'
console.log($('#test').attr('a'));//'123'
</script>
[注意]設(shè)置樣式名“class”特性時(shí),必須使用引號。否則IE8-瀏覽器下會報(bào)錯(cuò)
<div id="test"></div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
$('#test').attr({
class: 'test'
});
//IE8-瀏覽器會報(bào)錯(cuò),其他瀏覽器輸出'test'
console.log($('#test').attr('class'));
</script>
【3】attr(attributeName,function(index,attr))
attr(特性名,函數(shù)值):通過使用一個(gè)函數(shù)來設(shè)置屬性,可以根據(jù)該元素上的其它屬性值返回最終所需的屬性值
函數(shù)中的index表示元素在匹配集合中的索引位置,html表示元素原來的HTML內(nèi)容,this指向當(dāng)前的元素,函數(shù)返回用來設(shè)置的值
<div class="test" id="ele1" title="元素">元素一</div>
<div class="test" id="ele2" title="元素" >元素二</div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
$('.test').attr('title',function(index,attr){
return attr + this.className +index
})
console.log($('#ele1').attr('title'));//元素test0
console.log($('#ele2').attr('title'));//元素test1
</script>
如果用javascript實(shí)現(xiàn)類似的效果,實(shí)際上就是字符串連接
[注意]IE8-瀏覽器不支持getElementsByClassName()方法
<div class="test" id="ele1" title="元素">元素一</div>
<div class="test" id="ele2" title="元素" >元素二</div>
<script>
var classTest = document.getElementsByClassName('test');
for(var i = 0; i < classTest.length; i++){
classTest[i].title = classTest[i].title + classTest[i].className + i;
}
console.log(ele1.title);//元素test0
console.log(ele2.title);//元素test1
</script>
刪除特性
removeAttr(attributeName)
removeAttr()方法使用原生的removeAttribute()函數(shù),但是它的優(yōu)點(diǎn)是可以直接在一個(gè)jQuery 對象上調(diào)用該方法,并且它解決了跨瀏覽器的特性名不同的問題
要移除的屬性名從1.7版本開始,可以是一個(gè)空格分隔的屬性列表
<div id="ele1" title="元素" data="value">元素</div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
console.log($('#ele1').attr('title'));//'元素'
console.log($('#ele1').attr('data'));//'value'
$('#ele1').removeAttr('title data');
console.log($('#ele1').attr('title'));//undefined
console.log($('#ele1').attr('data'));//undefined
</script>
通過此文,希望大家能對jQuery 特性操作的知識掌握,謝謝大家對本站的支持!
- jQuery實(shí)現(xiàn)圖片輪播效果代碼
- jQuery css() 方法動態(tài)修改CSS屬性
- jquery attr()設(shè)置和獲取屬性值實(shí)例教程
- jQuery中的AjaxSubmit使用講解
- jQuery實(shí)現(xiàn)移動端手機(jī)商城購物車功能
- jquery不支持toggle()高(新)版本的問題解決
- jQuery實(shí)現(xiàn)邊框動態(tài)效果的實(shí)例代碼
- jQuery ui autocomplete選擇列表被Bootstrap模態(tài)窗遮擋的完美解決方法
- bootstrap與Jquery UI 按鈕樣式?jīng)_突的解決辦法
相關(guān)文章
在其他地方你學(xué)不到的jQuery小貼士和技巧(歡迎收藏)
這篇文章主要介紹了在其他地方你學(xué)不到的jQuery小貼士和技巧(歡迎收藏)的相關(guān)資料,需要的朋友可以參考下2016-01-01
jQuery實(shí)現(xiàn)浮動層隨瀏覽器滾動條滾動的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)浮動層隨瀏覽器滾動條滾動的方法,涉及jQuery操作頁面元素滾動的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
基于jQuery的輸入框無值自動顯示指定數(shù)據(jù)的實(shí)現(xiàn)代碼
在自己的網(wǎng)頁中,常常要實(shí)現(xiàn)指定樣式的輸入框,當(dāng)輸入框中沒有輸入或只輸入空格等無效信息時(shí),自動顯示指定的文本,以提醒用戶應(yīng)該如何操作,下面是具體實(shí)現(xiàn)方法,僅供參考。2011-01-01
Jquery多選下拉列表插件jquery multiselect功能介紹及使用
支持點(diǎn)擊label實(shí)現(xiàn)checkbox組選擇,頭部選項(xiàng),如全選/ 取消全選 /關(guān)閉功能,支持鍵盤選擇等等,下面與大家分享下具體使用2013-05-05
jQuery實(shí)現(xiàn)只允許輸入數(shù)字和小數(shù)點(diǎn)的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)只允許輸入數(shù)字和小數(shù)點(diǎn)的方法,涉及jQuery針對鍵盤事件的響應(yīng)及字符串操作的相關(guān)技巧,需要的朋友可以參考下2016-03-03
jQuery 自動增長的文本輸入框?qū)崿F(xiàn)代碼
文本輸入框內(nèi)的字?jǐn)?shù)不能確定,而input type="text"的size是固定的,當(dāng)字?jǐn)?shù)超過size時(shí)(默認(rèn)是20),先輸入的內(nèi)容就會從文本框的左端隱藏起來,不便于輸入。2010-04-04-
最新評論

