jquery中attr、prop、data區(qū)別與用法分析
本文實(shí)例講述了jquery中attr、prop、data區(qū)別與用法。分享給大家供大家參考,具體如下:
在高版本的jquery中獲取標(biāo)簽的屬性,可以使用attr()、prop()、data(),那么這些方法有什么區(qū)別呢?
- 對(duì)于HTML元素本身就帶有的固有屬性,在處理時(shí),使用prop方法。
- 對(duì)于HTML元素我們自己自定義的DOM屬性,在處理時(shí),使用attr方法。
- .data()看作是存取data-xxx這樣DOM附加信息的方法
上面的描述也許有點(diǎn)模糊,舉幾個(gè)例子就知道了。
<a rel="external nofollow" target="_self" class="btn">百度</a>
這個(gè)例子里<a>元素的DOM屬性有“href、target和class",這些屬性就是<a>元素本身就帶有的屬性,也是W3C標(biāo)準(zhǔn)里就包含有這幾個(gè)屬性,或者說(shuō)在IDE里能夠智能提示出的屬性,這些就叫做固有屬性。處理這些屬性時(shí),建議使用prop方法。
<a href="#" rel="external nofollow" id="link1" action="delete">刪除</a>
這個(gè)例子里<a>元素的DOM屬性有“href、id和action”,很明顯,前兩個(gè)是固有屬性,而后面一個(gè)“action”屬性是我們自己自定義上去的,<a>元素本身是沒(méi)有這個(gè)屬性的。這種就是自定義的DOM屬性。處理這些屬性時(shí),建議使用attr方法。使用prop方法取值和設(shè)置屬性值時(shí),都會(huì)返回undefined值。
再舉一個(gè)例子:
<input id="chk1" type="checkbox" />是否可見(jiàn) <input id="chk2" type="checkbox" checked="checked" />是否可見(jiàn)
像checkbox,radio和select這樣的元素,選中屬性對(duì)應(yīng)“checked”和“selected”,這些也屬于固有屬性,因此需要使用prop方法去操作才能獲得正確的結(jié)果。
$("#chk1").prop("checked") == false
$("#chk2").prop("checked") == true
如果上面使用attr方法,則會(huì)出現(xiàn):
$("#chk1").attr("checked") == undefined
$("#chk2").attr("checked") == "checked"
說(shuō)說(shuō).data(),我們知道 html 5里面DOM標(biāo)簽可以加以一些data-xxx的屬性,你可以把.data()看作是存取data-xxx這樣DOM附加信息的方法。當(dāng) 然,.data()存取的內(nèi)容不僅是字符串,還可以包含數(shù)組和對(duì)象。從jq1.4.3起, html5 的data-xxx屬性會(huì)自動(dòng)被添加到j(luò)q的data對(duì)象里,比如有下列代碼:
<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"noahlu"}'></div>
下面的等式都成立:
$("div").data("role") === "page";
$("div").data("lastValue") === 43;
$("div").data("hidden") === true;
$("div").data("options").name === "noahlu";
從性能上對(duì)比,.prop() > .data() > .attr(),不同瀏覽器不同版本.data()和.attr()的性能關(guān)系有差異,不過(guò).prop()總是最優(yōu)的。
更多關(guān)于jQuery相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《jQuery常見(jiàn)事件用法與技巧總結(jié)》、《jQuery常用插件及用法總結(jié)》、《jQuery操作json數(shù)據(jù)技巧匯總》、《jQuery擴(kuò)展技巧總結(jié)》、《jQuery常見(jiàn)經(jīng)典特效匯總》及《jquery選擇器用法總結(jié)》
希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。
- jquery獲取自定義屬性(attr和prop)實(shí)例介紹
- jquery中prop()方法和attr()方法的區(qū)別淺析
- jQuery學(xué)習(xí)之prop和attr的區(qū)別示例介紹
- jquery 獲取自定義屬性(attr和prop)的實(shí)現(xiàn)代碼
- jQuery獲取attr()與prop()屬性值的方法及區(qū)別介紹
- Jquery中attr與prop的區(qū)別詳解
- 關(guān)于jQuery中.attr()和.prop()的問(wèn)題探討
- jQuery中.attr()和.data()的區(qū)別分析
- JQuery中attr屬性和jQuery.data()學(xué)習(xí)筆記【必看】
- jQuery $.data()方法使用注意細(xì)節(jié)
相關(guān)文章
jquery 步驟進(jìn)度軸插件的實(shí)現(xiàn)代碼
今天給大家分享一個(gè)jquery插件之步驟進(jìn)度軸的實(shí)現(xiàn)思路,這個(gè)功能在一些網(wǎng)站注冊(cè)賬號(hào)時(shí)一般都會(huì)用到,今天就通過(guò)實(shí)例代碼給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧2021-05-05
jquery中dom操作和事件的實(shí)例學(xué)習(xí) 仿yahoo郵箱登錄框的提示效果
最近把jquery中的dom操作和jquery中的事件和動(dòng)畫(huà)的方法都大體測(cè)了一下。本來(lái)想細(xì)細(xì)的把每個(gè)方法都寫(xiě)出來(lái)介紹下2011-11-11
jQuery 實(shí)現(xiàn)ajax傳入?yún)?shù)含有特殊字符的方法總結(jié)
在做ajax登錄時(shí)候遇到的一個(gè)問(wèn)題,當(dāng)傳入?yún)?shù)含有特殊字符,比如:“$'#@”等。參數(shù)傳遞會(huì)有問(wèn)題,無(wú)法正確獲取。本文章向碼農(nóng)介紹jQuery ajax特殊字符參數(shù)解決方法,需要的朋友可以參考一下。2016-10-10
getJSON調(diào)用后臺(tái)json數(shù)據(jù)時(shí)函數(shù)被調(diào)用兩次的原因猜想
近期在做前端開(kāi)發(fā)時(shí)候使用到getJSON調(diào)用后臺(tái)json數(shù)據(jù),發(fā)現(xiàn)后臺(tái)的函數(shù)被調(diào)用兩次,函數(shù)名稱(chēng)為getMessages,下面是本人的一些猜想,感興趣的朋友可以參考下2013-09-09

