jQuery 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 ]; } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。