成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁 ? 技術(shù)教程 ? JQuery的attr 與 val區(qū)別
全站頭部文字 我要出現(xiàn)在這里
JQuery的attr 與 val區(qū)別 718 2024-02-28   

.attr(attributeName)

  attributeName:需要獲取屬性的名稱。

  獲取匹配集中第一個(gè)元素的屬性值。1.6中attr返回屬性的值為undefined,如果沒有設(shè)置(set)。另外,.attr不應(yīng)該在普通對(duì)象、數(shù)組(array)、窗口(window)或者文檔中(document)。如果需要獲取或者設(shè)置DOM屬性,則應(yīng)該使用.prop()方法。

  使用.attr方法獲取元素屬性的值有兩個(gè)主要優(yōu)點(diǎn):

方便(Convenience):這個(gè)方法可以在JQuery對(duì)象上直接調(diào)用和串聯(lián)別的JQuery的方法。

跨瀏覽器的一致性(Cross-browser consistency):有報(bào)告說一些屬性值在跨瀏覽器時(shí)的不一致性,甚至在同一瀏覽器的不同版本上也有不一致性。.attr減少這種不一致性

.val()

  獲取匹配集中第一個(gè)元素當(dāng)前的值。

  .val()就去主要用來獲取表單中元素的值,例如input, select 或者textarea。

不同

<input data-name="user" id="name" value="aaaa" /> 
?$('#name').val() ;/* 'aaaa'*/ 
$('#name').attr('data-name'); /*user*/ 

下面通過一段代碼給大家介紹jQuery attr("value") 和 val的區(qū)別

//2509行
if ( !getSetInput || !getSetAttribute ) {
jQuery.attrHooks.value = {
get: function( elem, name ) {
var ret = elem.getAttributeNode( name );
return jQuery.nodeName( elem, "input" ) ?
// Ignore the value *property* by using defaultValue
elem.defaultValue :
ret && ret.specified ? ret.value : undefined;
},
}

這邊返回值的邏輯判斷有變化

jQuery.nodeName( elem, "input" ) ?elem.defaultValue :ret && ret.specified ? ret.value :undefined;
// Ignore the value *property* by using defaultValue

要我們使用defaultValue.

JavaScript

attrHooks: {
type: {
set: function( elem, value ) {
if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
// Setting the type on a radio button after the value resets the value in IE6-9
// Reset value to default in case type is set after value during creation
var val = elem.value;
elem.setAttribute( "type", value );
if ( val ) {
elem.value = val;
}
return value;
}
}
}
},

而1.8.3代碼如下

JavaScript

//2361行
attrHooks: {
type: {
set: function( elem, value ) {
// We can't allow the type property to be changed (since it causes problems in IE)
if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
jQuery.error( "type property can't be changed" );
} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
// Setting the type on a radio button after the value resets the value in IE6-9
// Reset value to it's default in case type is set after value
// This is for element creation
var val = elem.value;
elem.setAttribute( "type", value );
if ( val ) {
elem.value = val;
}
return value;
}
}
},
// Use the value property for back compat
// Use the nodeHook for button elements in IE6/7 (#1954)
value: {
get: function( elem, name ) {
if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
return nodeHook.get( elem, name );
}
return name in elem ?
elem.value :
null;
},
set: function( elem, value, name ) {
if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
return nodeHook.set( elem, value, name );
}
// Does not return so that setAttribute is also used
elem.value = value;
}
}
},

可見1.9刪除了attrHooks.value方法導(dǎo)致非IE的attr("value")為undefined或默認(rèn)值,而IE的attr("value")為""或默認(rèn)值



主站蜘蛛池模板: 草原大作战| 瑜伽焰口全集 简体字| xlw| 丁丁历险记电影| 最近好看电影推荐| 张剑虹| 威虎山黑话大全口令| 阴阳先生第一季| 拾贝的小女孩阅读理解答案| 王瑞儿视频| 花火图片| 沉默的较量| 朱莉安妮全集在线观看免费| 决胜法庭演员表| 双修杨幂,刘亦菲小说| 李修文| 数码宝贝第三部| 拾贝的小女孩阅读理解答案| 成人免费黄色电影| 竹内美宥| 绫濑天| 铁血战士电影| 净三业真言| 美姐妹| 掐脖子的视频| 性感直播| 冰之下| 美女亲热视频| 上锁的房间演员表| 所求皆所愿| 北京卫视今天全部节目表| 张钰凰| 抖音网页| 朱荣荣| 宫心计演员表介绍| 网上视频| 思念天边的你简谱| 小镇姑娘高清播放| 斯维特拜克之歌电影| 美丽丽人| 提升自我|

!!!站長(zhǎng)長(zhǎng)期在線接!!!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長(zhǎng)微信:lxwl520520

站長(zhǎng)QQ:1737366103