日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > web前端 > htmlcss > [JS]jQuery中attr和prop方法的區(qū)別

[JS]jQuery中attr和prop方法的區(qū)別

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-02-24 21:30:27 閱讀次數(shù):4670次

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

之前看網(wǎng)上對(duì)照二者的文章,更是列出1個(gè)表來(lái)辨別甚么標(biāo)簽下使用prop,甚么標(biāo)簽下使用attr,諒解我是怠惰的人,最懼怕要背的東西,所以只有自己想一想辦法了。

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

attr方法代碼(jQuery版本1.8.3)

  • 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 ),很明顯的看出來(lái),使用的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ì)象的1個(gè)屬性。

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

  • <input type= 生活不易,碼農(nóng)辛苦
    如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
    程序員人生
------分隔線(xiàn)----------------------------
分享到:
------分隔線(xiàn)----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 在线中文视频 | 国产一区久久 | 中文字幕在线观看不卡 | 亚洲成av人片一区二区 | 久久久久久毛片免费看 | 久久国产成人精品 | 九九九久久 | 成人亚洲区 | 91av导航| 大尺度网站在线观看 | 久久久久久久久国产 | 亚洲在线观看视频 | 圆产精品久久久久久久久久久 | 青草一区| 在线观看精品一区 | 这里有精品视频 | 久久久蜜桃 | 91麻豆精品一区二区三区 | 国产在线观看免费麻豆 | 久久久夜色精品亚洲 | 久久熟| 国产一区二区成人在线 | 在线国产视频 | 天天操夜夜草 | 欧美日韩在线一区二区三区 | 日韩精品一区二区在线 | 日韩欧美一区二区三区 | 国产乱色国产精品播放视频 | 最近中文幕mv免费高清 | 欧美理论在线 | 成人精品鲁一区一区二区 | 999成人网 | 91精品国产日韩91久久久久久 | 国产美女久久 | 99在线视频免费观看 | 亚洲午夜久久久久久久久久久 | 黄色网址电影 | 国产精品国产三级国产aⅴ9色 | 久久久a | 黄色成年人视频 | 成人国产一区 |