首页 > 代码库 > jQuery prop() 源码解读

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 ];        }    }

 

jQuery prop() 源码解读