11define ( [
22 "../core" ,
3- "../var/rnotwhite" ,
43 "../core/access" ,
54 "./support" ,
5+ "../var/rnotwhite" ,
66 "../selector"
7- ] , function ( jQuery , rnotwhite , access , support ) {
7+ ] , function ( jQuery , access , support , rnotwhite ) {
88
99var boolHook ,
1010 attrHandle = jQuery . expr . attrHandle ;
@@ -23,10 +23,10 @@ jQuery.fn.extend({
2323
2424jQuery . extend ( {
2525 attr : function ( elem , name , value ) {
26- var hooks , ret ,
26+ var ret , hooks ,
2727 nType = elem . nodeType ;
2828
29- // don 't get/set attributes on text, comment and attribute nodes
29+ // Don 't get/set attributes on text, comment and attribute nodes
3030 if ( nType === 3 || nType === 8 || nType === 2 ) {
3131 return ;
3232 }
@@ -45,30 +45,43 @@ jQuery.extend({
4545 }
4646
4747 if ( value !== undefined ) {
48-
4948 if ( value === null ) {
5049 jQuery . removeAttr ( elem , name ) ;
50+ return ;
51+ }
5152
52- } else if ( hooks && "set" in hooks &&
53- ( ret = hooks . set ( elem , value , name ) ) !== undefined ) {
54-
53+ if ( hooks && "set" in hooks &&
54+ ( ret = hooks . set ( elem , value , name ) ) !== undefined ) {
5555 return ret ;
56-
57- } else {
58- elem . setAttribute ( name , value + "" ) ;
59- return value ;
6056 }
6157
62- } else if ( hooks && "get" in hooks && ( ret = hooks . get ( elem , name ) ) !== null ) {
58+ elem . setAttribute ( name , value + "" ) ;
59+ return value ;
60+ }
61+
62+ if ( hooks && "get" in hooks && ( ret = hooks . get ( elem , name ) ) !== null ) {
6363 return ret ;
64+ }
6465
65- } else {
66- ret = jQuery . find . attr ( elem , name ) ;
66+ ret = jQuery . find . attr ( elem , name ) ;
6767
68- // Non-existent attributes return null, we normalize to undefined
69- return ret == null ?
70- undefined :
71- ret ;
68+ // Non-existent attributes return null, we normalize to undefined
69+ return ret == null ? undefined : ret ;
70+ } ,
71+
72+ attrHooks : {
73+ type : {
74+ set : function ( elem , value ) {
75+ if ( ! support . radioValue && value === "radio" &&
76+ jQuery . nodeName ( elem , "input" ) ) {
77+ var val = elem . value ;
78+ elem . setAttribute ( "type" , value ) ;
79+ if ( val ) {
80+ elem . value = val ;
81+ }
82+ return value ;
83+ }
84+ }
7285 }
7386 } ,
7487
@@ -78,34 +91,19 @@ jQuery.extend({
7891 attrNames = value && value . match ( rnotwhite ) ;
7992
8093 if ( attrNames && elem . nodeType === 1 ) {
81- while ( ( name = attrNames [ i ++ ] ) ) {
94+ while ( ( name = attrNames [ i ++ ] ) ) {
8295 propName = jQuery . propFix [ name ] || name ;
8396
8497 // Boolean attributes get special treatment (#10870)
8598 if ( jQuery . expr . match . bool . test ( name ) ) {
99+
86100 // Set corresponding property to false
87101 elem [ propName ] = false ;
88102 }
89103
90104 elem . removeAttribute ( name ) ;
91105 }
92106 }
93- } ,
94-
95- attrHooks : {
96- type : {
97- set : function ( elem , value ) {
98- if ( ! support . radioValue && value === "radio" &&
99- jQuery . nodeName ( elem , "input" ) ) {
100- var val = elem . value ;
101- elem . setAttribute ( "type" , value ) ;
102- if ( val ) {
103- elem . value = val ;
104- }
105- return value ;
106- }
107- }
108- }
109107 }
110108} ) ;
111109
0 commit comments