jquery attr() & prop()

version: 1.9.1

Attr

 1 attr: function( elem, name, value ) {
 2     var hooks, notxml, ret,
 3         nType = elem.nodeType;
 4
 5     // don‘t get/set attributes on text, comment and attribute nodes
 6     if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
 7         return;
 8     }
 9
10     // Fallback to prop when attributes are not supported
11     if ( typeof elem.getAttribute === core_strundefined ) {
12         return jQuery.prop( elem, name, value );
13     }
14
15     notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
16
17     // All attributes are lowercase
18     // Grab necessary hook if one is defined
19     if ( notxml ) {
20         name = name.toLowerCase();
21         hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
22     }
23
24     if ( value !== undefined ) {
25
26         if ( value === null ) {
27             jQuery.removeAttr( elem, name );
28
29         } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
30             return ret;
31
32         } else {
33             elem.setAttribute( name, value + "" );
34             return value;
35         }
36
37     } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
38         return ret;
39
40     } else {
41
42         // In IE9+, Flash objects don‘t have .getAttribute (#12945)
43         // Support: IE9+
44         if ( typeof elem.getAttribute !== core_strundefined ) {
45             ret =  elem.getAttribute( name );
46         }
47
48         // Non-existent attributes return null, we normalize to undefined
49         return ret == null ?
50             undefined :
51             ret;
52     }
53 }

Prop

 1 prop: function( elem, name, value ) {
 2     var ret, hooks, notxml,
 3         nType = elem.nodeType;
 4
 5     // don‘t get/set properties on text, comment and attribute nodes
 6     if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
 7         return;
 8     }
 9
10     notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
11
12     if ( notxml ) {
13         // Fix name and attach hooks
14         name = jQuery.propFix[ name ] || name;
15         hooks = jQuery.propHooks[ name ];
16     }
17
18     if ( value !== undefined ) {
19         if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
20             return ret;
21
22         } else {
23             return ( elem[ name ] = value );
24         }
25
26     } else {
27         if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
28             return ret;
29
30         } else {
31             return elem[ name ];
32         }
33     }
34 }

参考:http://wenzhixin.net.cn/2013/05/24/jquery_attr_prop

时间: 2024-11-03 05:31:24

jquery attr() & prop()的相关文章

jQuery .attr() .prop() .data()区别及全选等问题

DOM的attribute和property 今天讲一个JS的小话题,就是DOM节点的attribute和property的区别,这个点看起来很小,其实背后别有洞天.如果面试一个前端,听他讲讲对这个问题的理解,基本能分辨是不是菜鸟.下面的内容请各位细心体会. 页面有一个INPUT输入框   这个比较简单,没什么好说的,两个值都是’1′.现在我把输入框的值改成100,然后重新取一遍值: 为什么两个值不同了?这就是attribute和property在作怪. Attibute 这 个INPUT节点有

JQUERY attr prop 的区别 一个已经被淘汰

在做jquery 全选 全不选的项目中, 1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) .prop( map ) .prop( propertyName, function(index, oldPropertyValue) ) 给匹配元素集合设定一个或多个属性 .prop()和 .attr()区别 下面是关于jQuery1.6和1.6.1中Attributes模块变化的描述,以及.a

jQuery attr() prop() data()用法及区别

.attr(),此方法从jq1.0开始一直存在,官方文档写的作用是读/写DOM的attribute值,其实1.6之前有时候是attribute,有时候又是property..prop(),此方法jq1.6引入,读/写DOM的property..data(),此方法在jq1.2.3引入,作用是把任意的值读取/存储到DOM元素对应的jq对象上.从性能上对比,.prop() > .data() > .attr(),不同浏览器不同版本.data()和.attr()的性能关系有差异,不过.prop()总

jquery,attr,prop,checkbox标签已有checked=checked但是不显示勾选

最近在做项目的过程中碰到了这样的一个问题:在使用bootstrap模态框的过程中,在模态框中有一个checkbox标签,一开始是为选中的,当点击触发模态框按钮,选中chcekbox时,会显示勾选,这个时候将选中的状态缓存起来,然后点击模态框中的关闭按钮,再次点击触发模态框按钮弹出模态框,这个时候问题出现了:         checkbox标签已有checked=checked但是不显示勾选,网上也查过有解决方案,就是将   $("...").attr("checked&qu

jquery attr prop checkbox已有checked=checked但不显示勾选问题

最近在做项目的过程中碰到了这样的一个问题:在使用bootstrap模态框的过程中,在模态框中有一个checkbox标签,一开始是为选中的,当点击触发模态框按钮,选中chcekbox时,会显示勾选,这个时候将选中的状态缓存起来,然后点击模态框中的关闭按钮,再次点击触发模态框按钮弹出模态框,这个时候问题出现了: checkbox标签已有checked=checked但是不显示勾选,查看图片: 网上也查过有解决方案,就是将   $("...").attr("checked"

jQuery .attr() vs. .prop()

Property vs. Attribute 在开始正式比较prop()和attr()两个jQuery方法之前,我们有必要先弄清一下Property和Attribute两个单词的意思.在中文里面,它们都是属性的意思,那究竟有什么区别呢?我是这么理解的(曾经在<深入浅出WPF>一书中看到过一些关于XAML相关的解释,觉得这里也是适用的): Property - 属性.字段,这是站在面向对象的层面去理解的,当我们将现实中的某一物体用代码把它抽象出来时,那么它的属性我们就用Property来表示.在

浅谈jquery中prop()和attr()

我们都知道,一般在jquery中设置属性时要用到attr()方法,现在我们有一个效果,点击按钮切换复选框的选中状态,下面贴出html代码: <input type="checkbox" id="check"> <label>复选框</label> <input type="button" value="切换" id="btn"> js代码: <scrip

[ jquery 方法 removeAttr(name) | removeProp(name) ] 此方法用来删除对应的由.attr() | .prop()方法设置的属性集

用来删除由.attr() | .prop()方法设置的属性集: 随着一些内置属性的DOM元素或window对象,如果试图将删除该属性,浏览器可能会产生错误.jQuery第一次分配undefined值的属性,而忽略了浏览器生成的任何错误 实例: <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='descrip

jQuery的prop和attr方法之间区别

JQuery.attr(): Get the value of an attribute for the first element in the set of matched elements. JQuery. Prop(): Gets the value of a property for the first element in the set of matched elements. Reference MSDN: for a checkbox (jquery 1.6+) <input