中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

JS中attr和prop屬性的區(qū)別以及優(yōu)先選擇示例
來源:易賢網(wǎng) 閱讀:905 次 日期:2015-02-02 11:48:52
溫馨提示:易賢網(wǎng)小編為您整理了“JS中attr和prop屬性的區(qū)別以及優(yōu)先選擇示例”,方便廣大網(wǎng)友查閱!

相比attr,prop是1.6.1才新出來的,兩者從中文意思理解,都是獲取/設(shè)置屬性的方法(attributes和properties)。只是,window或document中使用.attr()方法在jQuery1.6之前不能正常運(yùn)行,因?yàn)閣indow和document中不能有attributes。prop應(yīng)運(yùn)而生了。

既然我們想知道他們兩的區(qū)別,最好就看看他們的源代碼,不要被代碼長(zhǎng)度所嚇到,我們只看關(guān)鍵的幾句:

attr: function( elem, name, value, pass ) {

var ret, hooks, notxml,

nType = elem.nodeType;

// don't get/set attributes on text, comment and attribute nodes

if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {

return;

}

if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {

return jQuery( elem )[ name ]( value );

}

// Fallback to prop when attributes are not supported

if ( typeof elem.getAttribute === "undefined" ) {

return jQuery.prop( elem, name, value );

}

notxml = nType !== 1 || !jQuery.isXMLDoc( elem );

// All attributes are lowercase

// Grab necessary hook if one is defined

if ( notxml ) {

name = name.toLowerCase();

hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );

}

if ( value !== undefined ) {

if ( value === null ) {

jQuery.removeAttr( elem, name );

return;

} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {

return ret;

} else {

elem.setAttribute( name, value + "" );

return value;

}

} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {

return ret;

} else {

ret = elem.getAttribute( name );

// Non-existent attributes return null, we normalize to undefined

return ret === null ?

undefined :

ret;

}

}

prop方法代碼(jQuery版本1.8.3)

prop: function( elem, name, value ) {

var ret, hooks, notxml,

nType = elem.nodeType;

// don't get/set properties on text, comment and attribute nodes

if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {

return;

}

notxml = nType !== 1 || !jQuery.isXMLDoc( elem );

if ( notxml ) {

// Fix name and attach hooks

name = jQuery.propFix[ name ] || name;

hooks = jQuery.propHooks[ name ];

}

if ( value !== undefined ) {

if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {

return ret;

} else {

return ( elem[ name ] = value );

}

} else {

if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {

return ret;

} else {

return elem[ name ];

}

}

}

attr方法里面,最關(guān)鍵的兩行代碼,elem.setAttribute( name, value + “” )和ret = elem.getAttribute( name ),很明顯的看出來,使用的DOM的API setAttribute和getAttribute方法操作的屬性元素節(jié)點(diǎn)。

而prop方法里面,最關(guān)鍵的兩行代碼,return ( elem[ name ] = value )和return elem[ name ],你可以理解成這樣document.getElementById(el)[name] = value,這是轉(zhuǎn)化成JS對(duì)象的一個(gè)屬性。

既然明白了原理是這樣,我們來看看一個(gè)例子:

<input type="checkbox" id="test" abc="111" />

$(function(){

el = $("#test");

console.log(el.attr("style")); //undefined

console.log(el.prop("style")); //CSSStyleDeclaration對(duì)象

console.log(document.getElementById("test").style); //CSSStyleDeclaration對(duì)象

});

el.attr(“style”)輸出undefined,因?yàn)閍ttr是獲取的這個(gè)對(duì)象屬性節(jié)點(diǎn)的值,很顯然此時(shí)沒有這個(gè)屬性節(jié)點(diǎn),自然輸出undefined

el.prop(“style”)輸出CSSStyleDeclaration對(duì)象,對(duì)于一個(gè)DOM對(duì)象,是具有原生的style對(duì)象屬性的,所以輸出了style對(duì)象

至于document.getElementById(“test”).style和上面那條一樣

接著看:

el.attr("abc","111")

console.log(el.attr("abc")); //111

console.log(el.prop("abc")); //undefined

首先用attr方法給這個(gè)對(duì)象添加abc節(jié)點(diǎn)屬性,值為111,可以看到html的結(jié)構(gòu)也變了

el.attr(“abc”)輸出結(jié)果為111,再正常不過了

el.prop(“abc”)輸出undefined,因?yàn)閍bc是在這個(gè)的屬性節(jié)點(diǎn)中,所以通過prop是取不到的

el.prop("abc", "222");

console.log(el.attr("abc")); //111

console.log(el.prop("abc")); //222

我們?cè)儆胮rop方法給這個(gè)對(duì)象設(shè)置了abc屬性,值為222,可以看到html的結(jié)構(gòu)是沒有變化的。輸出的結(jié)果就不解釋了。

上面已經(jīng)把原理講清楚了,什么時(shí)候用什么就可以自己把握了。

提一下,在遇到要獲取或設(shè)置checked,selected,readonly和disabled等屬性時(shí),用prop方法顯然更好,比如像下面這樣:

<input type="checkbox" id="test" checked="checked" />

console.log(el.attr("checked")); //checked

console.log(el.prop("checked")); //true

console.log(el.attr("disabled")); //undefined

console.log(el.prop("disabled")); //false

顯然,布爾值比字符串值讓接下來的處理更合理。

PS一下,如果你有JS性能潔癖的話,顯然prop的性能更高,因?yàn)閍ttr需要訪問DOM屬性節(jié)點(diǎn),訪問DOM是最耗時(shí)的。這種情況適用于多選項(xiàng)全選和反選的情況。

大家都知道有的瀏覽器只要寫disabled,checked就可以了,而有的要寫成disabled = "disabled",checked="checked",比如用attr("checked")獲取checkbox的checked屬性時(shí)選中的時(shí)候可以取到值,值為"checked"但沒選中獲取值就是undefined。

jq提供新的方法“prop”來獲取這些屬性,就是來解決這個(gè)問題的,以前我們使用attr獲取checked屬性時(shí)返回"checked"和"",現(xiàn)在使用prop方法獲取屬性則統(tǒng)一返回true和false。

那么,什么時(shí)候使用attr(),什么時(shí)候使用prop()?

1.添加屬性名稱該屬性就會(huì)生效應(yīng)該使用prop();

2.是有true,false兩個(gè)屬性使用prop();

3.其他則使用attr();

項(xiàng)目中jquery升級(jí)的時(shí)候大家要注意這點(diǎn)!

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:JS中attr和prop屬性的區(qū)別以及優(yōu)先選擇示例
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲精品欧美日韩专区| 欧美国产高清| 亚洲黄色免费| 欧美激情中文不卡| 亚洲女人av| 欧美精品啪啪| 国产亚洲毛片在线| 欧美中文字幕在线观看| 亚洲自拍偷拍一区| 亚洲天堂av综合网| 篠田优中文在线播放第一区| 快射av在线播放一区| 欧美日韩国产精品专区| 亚洲高清久久网| 亚洲欧美在线视频观看| 欧美日韩国产小视频在线观看| 国产精品国产馆在线真实露脸 | 亚洲欧美视频一区| 久久综合激情| 国产美女搞久久| 99亚洲视频| 美女视频黄免费的久久| 黄色欧美日韩| 久久精品成人一区二区三区| 国产一区二区视频在线观看| 欧美在线视频不卡| 国产午夜精品在线观看| 亚洲一区二区三区免费在线观看| 欧美日本一道本在线视频| 一区二区视频免费在线观看 | 国产乱码精品1区2区3区| 亚洲美女福利视频网站| 男人的天堂亚洲在线| 亚洲国产一区二区视频| 欧美gay视频激情| 国外成人在线视频| 久久青草福利网站| 在线观看亚洲一区| 免费欧美电影| 亚洲精品裸体| 欧美午夜精品一区| 亚洲男女自偷自拍图片另类| 国产精品毛片高清在线完整版| 午夜一级在线看亚洲| 国产视频精品网| 老司机午夜精品| 亚洲国产二区| 欧美日韩国产精品一区| 亚洲一级高清| 国产一区二区三区免费观看| 欧美一区二区网站| 影音先锋在线一区| 久久在线播放| 国产一级久久| 欧美国产日产韩国视频| 一区二区三区日韩| 国产亚洲精品久久久久动| 欧美在线观看视频一区二区三区| 国产精品每日更新| 久久久精品国产免大香伊| 精品69视频一区二区三区| 欧美黄在线观看| 午夜精品久久久久久| 好看的日韩av电影| 欧美视频二区36p| 久久久爽爽爽美女图片| 国产精品99久久久久久久vr| 国产三区二区一区久久| 欧美日韩国产一中文字不卡| 久久成人一区| 亚洲手机视频| 亚洲欧洲日产国码二区| 国产精品专区一| 欧美精品一区二区三区很污很色的| 欧美在线播放| 日韩一级大片| 精品成人乱色一区二区| 国产精品免费区二区三区观看| 欧美激情网站在线观看| 久久久久国色av免费看影院| 亚洲视频免费看| 日韩一级在线观看| 揄拍成人国产精品视频| 国产精品超碰97尤物18| 欧美大片国产精品| 性视频1819p久久| 一区二区三区国产盗摄| 亚洲大胆美女视频| 国产一区二区丝袜高跟鞋图片| 国产精品高潮呻吟视频| 欧美日本精品| 欧美黄色一区二区| 欧美在线3区| 亚洲影音先锋| 亚洲一级黄色av| 亚洲精选一区二区| 亚洲国产成人av好男人在线观看| 国产日韩精品视频一区| 欧美日韩一区二区三区在线看 | 亚洲视频你懂的| 亚洲啪啪91| 亚洲人体1000| 亚洲精品在线一区二区| 亚洲欧洲精品一区二区三区 | 国产精品乱子久久久久| 欧美大片免费久久精品三p | 精品91在线| 国产亚洲精品v| 国产精品一区二区黑丝| 国产精品久久久久aaaa樱花| 国产欧美丝祙| 国产日韩亚洲欧美综合| 国产欧美一区二区精品性色| 国产综合欧美| 国内视频一区| 一区二区三区亚洲| 亚洲国产一区二区三区青草影视 | 国产精品久久久久99| 欧美日韩国产高清视频| 欧美午夜影院| 国产精品日韩久久久久| 国产欧美日韩综合精品二区| 伊人久久婷婷| 日韩午夜电影av| 亚洲靠逼com| 欧美色综合天天久久综合精品| 欧美日韩免费观看一区=区三区| 欧美午夜精品久久久久免费视| 欧美色图天堂网| 国产欧美日韩视频一区二区三区| 国产精品毛片va一区二区三区 | 国产精品精品视频| 国产一区二区三区久久精品| 最新精品在线| 亚洲欧美另类国产| 模特精品在线| 国产精品久久久久久久第一福利| 国产伦精品一区二区三区高清| 国产在线欧美| 亚洲一区二区日本| 久久久国产精彩视频美女艺术照福利| 免费视频亚洲| 国产在线观看91精品一区| 最新日韩在线视频| 欧美在线视频网站| 欧美偷拍一区二区| 亚洲第一天堂无码专区| 亚洲在线1234| 欧美日韩国产综合视频在线观看 | 国产欧美精品一区aⅴ影院| 国内精品久久久久久久影视麻豆 | 国产色产综合色产在线视频| 亚洲国产日韩欧美一区二区三区| 亚洲欧美日韩国产| 欧美日韩在线第一页| 合欧美一区二区三区| 亚洲午夜一级| 欧美极品影院| 亚洲国产综合91精品麻豆| 欧美在线电影| 国产欧美亚洲一区| 中文欧美日韩| 欧美精品亚洲| 亚洲精品午夜| 男人插女人欧美| 在线电影院国产精品| 久久精品理论片| 国产亚洲视频在线| 午夜精品www| 亚洲欧美日本伦理| 欧美午夜视频网站| 日韩一区二区久久| 欧美日韩播放| 亚洲图片在线| 国产精品久99| 亚洲女同在线| 国产精品一区二区久久国产| 亚洲美女黄色片| 久久伊人精品天天| 国产一区亚洲| 亚洲一级在线观看| 欧美三级视频在线播放| 日韩一级大片在线| 国产精品大全| 亚洲免费人成在线视频观看| 好吊日精品视频| 午夜国产精品影院在线观看| 国产精品porn| 亚洲欧美清纯在线制服| 国产精品福利网站| 欧美在线观看视频一区二区三区 | 一本色道久久加勒比88综合| 女女同性女同一区二区三区91| 久久噜噜亚洲综合| 国产一区二区三区黄视频| 久久久久久久久久久久久女国产乱| 国产曰批免费观看久久久| 亚洲国产日韩欧美在线图片| 免费不卡在线观看av| 亚洲激情欧美激情|