jQuery prop() 与 removeProp()源码解读
prop()
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 ) { // 属性中的for与class涉及到保留字,所以通过propFix分别对应到htmlFor和className // propFix: { // "for": "htmlFor", // "class": "className" // } name = jQuery.propFix[ name ] || name; // propHooks: { // tabIndex: { // get: function( elem ) { // return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ? // elem.tabIndex : // -1; // } // } // } //hasAttribute IE9+ //rfocusable 用于检测可以处于焦点的表单元素正则 hooks = jQuery.propHooks[ name ]; } if ( value !== undefined ) {//赋值 return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? ret : ( elem[ name ] = value ); } else {//取值 return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? ret : elem[ name ]; } }
removeProp()
removeProp: function( name ) { return this.each(function() { delete this[ jQuery.propFix[ name ] || name ]; }); }
hi,我的新博客地址:ysha.me !!