corrade-http-templates – Blame information for rev 61

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