zoukankan      html  css  js  c++  java
  • 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 ];
            });
        }
  • 相关阅读:
    JLOI2012:时间流逝
    bzoj 5217: [Lydsy2017省队十连测]航海舰队
    bzoj 4894: 天赋
    bzoj 4870: [Shoi2017]组合数问题
    bzoj 1558: [JSOI2009]等差数列
    bzoj 4945: [Noi2017]游戏
    bzoj 2142: 礼物
    bzoj 5248: [2018多省省队联测]一双木棋
    51nod2383
    codeforces24D
  • 原文地址:https://www.cnblogs.com/qianlegeqian/p/4224821.html
Copyright © 2011-2022 走看看