scratch – Blame information for rev 125

Subversion Repositories:
Rev:
Rev Author Line No. Line
125 office 1 define([
58 office 2 "../core",
125 office 3 "../var/rnotwhite",
4 "../var/strundefined",
58 office 5 "../core/access",
6 "./support",
7 "../selector"
125 office 8 ], function( jQuery, rnotwhite, strundefined, access, support ) {
58 office 9  
125 office 10 var nodeHook, boolHook,
58 office 11 attrHandle = jQuery.expr.attrHandle;
12  
125 office 13 jQuery.fn.extend({
58 office 14 attr: function( name, value ) {
15 return access( this, jQuery.attr, name, value, arguments.length > 1 );
16 },
17  
18 removeAttr: function( name ) {
125 office 19 return this.each(function() {
58 office 20 jQuery.removeAttr( this, name );
125 office 21 });
58 office 22 }
125 office 23 });
58 office 24  
125 office 25 jQuery.extend({
58 office 26 attr: function( elem, name, value ) {
125 office 27 var hooks, ret,
58 office 28 nType = elem.nodeType;
29  
125 office 30 // don't get/set attributes on text, comment and attribute nodes
31 if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
58 office 32 return;
33 }
34  
35 // Fallback to prop when attributes are not supported
125 office 36 if ( typeof elem.getAttribute === strundefined ) {
58 office 37 return jQuery.prop( elem, name, value );
38 }
39  
125 office 40 // All attributes are lowercase
58 office 41 // Grab necessary hook if one is defined
42 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
125 office 43 name = name.toLowerCase();
44 hooks = jQuery.attrHooks[ name ] ||
45 ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
58 office 46 }
47  
48 if ( value !== undefined ) {
125 office 49  
58 office 50 if ( value === null ) {
51 jQuery.removeAttr( elem, name );
52  
125 office 53 } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
58 office 54 return ret;
125 office 55  
56 } else {
57 elem.setAttribute( name, value + "" );
58 return value;
58 office 59 }
60  
125 office 61 } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
62 return ret;
58 office 63  
125 office 64 } else {
65 ret = jQuery.find.attr( elem, name );
66  
67 // Non-existent attributes return null, we normalize to undefined
68 return ret == null ?
69 undefined :
70 ret;
58 office 71 }
125 office 72 },
58 office 73  
125 office 74 removeAttr: function( elem, value ) {
75 var name, propName,
76 i = 0,
77 attrNames = value && value.match( rnotwhite );
58 office 78  
125 office 79 if ( attrNames && elem.nodeType === 1 ) {
80 while ( (name = attrNames[i++]) ) {
81 propName = jQuery.propFix[ name ] || name;
82  
83 // Boolean attributes get special treatment (#10870)
84 if ( jQuery.expr.match.bool.test( name ) ) {
85 // Set corresponding property to false
86 elem[ propName ] = false;
87 }
88  
89 elem.removeAttribute( name );
90 }
91 }
58 office 92 },
93  
94 attrHooks: {
95 type: {
96 set: function( elem, value ) {
97 if ( !support.radioValue && value === "radio" &&
98 jQuery.nodeName( elem, "input" ) ) {
99 var val = elem.value;
100 elem.setAttribute( "type", value );
101 if ( val ) {
102 elem.value = val;
103 }
104 return value;
105 }
106 }
107 }
108 }
125 office 109 });
58 office 110  
111 // Hooks for boolean attributes
112 boolHook = {
113 set: function( elem, value, name ) {
114 if ( value === false ) {
115 // Remove boolean attributes when set to false
116 jQuery.removeAttr( elem, name );
117 } else {
118 elem.setAttribute( name, name );
119 }
120 return name;
121 }
122 };
123 jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
124 var getter = attrHandle[ name ] || jQuery.find.attr;
125  
126 attrHandle[ name ] = function( elem, name, isXML ) {
125 office 127 var ret, handle;
58 office 128 if ( !isXML ) {
129 // Avoid an infinite loop by temporarily removing this function from the getter
125 office 130 handle = attrHandle[ name ];
131 attrHandle[ name ] = ret;
58 office 132 ret = getter( elem, name, isXML ) != null ?
125 office 133 name.toLowerCase() :
58 office 134 null;
125 office 135 attrHandle[ name ] = handle;
58 office 136 }
137 return ret;
138 };
125 office 139 });
58 office 140  
125 office 141 });