首页 > Web开发 > 详细

jQuery prop() 源码解读

时间:2015-01-14 21:10:56      阅读:461      评论:0      收藏:0      [点我收藏+]

技术分享

    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() 源码解读

原文:http://www.cnblogs.com/qianlegeqian/p/4224821.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!