corrade-http-templates – Blame information for rev 57

Subversion Repositories:
Rev:
Rev Author Line No. Line
57 office 1 define( [
2 "../core",
3 "../core/stripAndCollapse",
4 "../var/isFunction",
5 "../var/rnothtmlwhite",
6 "../data/var/dataPriv",
7 "../core/init"
8 ], function( jQuery, stripAndCollapse, isFunction, rnothtmlwhite, dataPriv ) {
9  
10 "use strict";
11  
12 function getClass( elem ) {
13 return elem.getAttribute && elem.getAttribute( "class" ) || "";
14 }
15  
16 function classesToArray( value ) {
17 if ( Array.isArray( value ) ) {
18 return value;
19 }
20 if ( typeof value === "string" ) {
21 return value.match( rnothtmlwhite ) || [];
22 }
23 return [];
24 }
25  
26 jQuery.fn.extend( {
27 addClass: function( value ) {
28 var classes, elem, cur, curValue, clazz, j, finalValue,
29 i = 0;
30  
31 if ( isFunction( value ) ) {
32 return this.each( function( j ) {
33 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
34 } );
35 }
36  
37 classes = classesToArray( value );
38  
39 if ( classes.length ) {
40 while ( ( elem = this[ i++ ] ) ) {
41 curValue = getClass( elem );
42 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
43  
44 if ( cur ) {
45 j = 0;
46 while ( ( clazz = classes[ j++ ] ) ) {
47 if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
48 cur += clazz + " ";
49 }
50 }
51  
52 // Only assign if different to avoid unneeded rendering.
53 finalValue = stripAndCollapse( cur );
54 if ( curValue !== finalValue ) {
55 elem.setAttribute( "class", finalValue );
56 }
57 }
58 }
59 }
60  
61 return this;
62 },
63  
64 removeClass: function( value ) {
65 var classes, elem, cur, curValue, clazz, j, finalValue,
66 i = 0;
67  
68 if ( isFunction( value ) ) {
69 return this.each( function( j ) {
70 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
71 } );
72 }
73  
74 if ( !arguments.length ) {
75 return this.attr( "class", "" );
76 }
77  
78 classes = classesToArray( value );
79  
80 if ( classes.length ) {
81 while ( ( elem = this[ i++ ] ) ) {
82 curValue = getClass( elem );
83  
84 // This expression is here for better compressibility (see addClass)
85 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
86  
87 if ( cur ) {
88 j = 0;
89 while ( ( clazz = classes[ j++ ] ) ) {
90  
91 // Remove *all* instances
92 while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
93 cur = cur.replace( " " + clazz + " ", " " );
94 }
95 }
96  
97 // Only assign if different to avoid unneeded rendering.
98 finalValue = stripAndCollapse( cur );
99 if ( curValue !== finalValue ) {
100 elem.setAttribute( "class", finalValue );
101 }
102 }
103 }
104 }
105  
106 return this;
107 },
108  
109 toggleClass: function( value, stateVal ) {
110 var type = typeof value,
111 isValidValue = type === "string" || Array.isArray( value );
112  
113 if ( typeof stateVal === "boolean" && isValidValue ) {
114 return stateVal ? this.addClass( value ) : this.removeClass( value );
115 }
116  
117 if ( isFunction( value ) ) {
118 return this.each( function( i ) {
119 jQuery( this ).toggleClass(
120 value.call( this, i, getClass( this ), stateVal ),
121 stateVal
122 );
123 } );
124 }
125  
126 return this.each( function() {
127 var className, i, self, classNames;
128  
129 if ( isValidValue ) {
130  
131 // Toggle individual class names
132 i = 0;
133 self = jQuery( this );
134 classNames = classesToArray( value );
135  
136 while ( ( className = classNames[ i++ ] ) ) {
137  
138 // Check each className given, space separated list
139 if ( self.hasClass( className ) ) {
140 self.removeClass( className );
141 } else {
142 self.addClass( className );
143 }
144 }
145  
146 // Toggle whole class name
147 } else if ( value === undefined || type === "boolean" ) {
148 className = getClass( this );
149 if ( className ) {
150  
151 // Store className if set
152 dataPriv.set( this, "__className__", className );
153 }
154  
155 // If the element has a class name or if we're passed `false`,
156 // then remove the whole classname (if there was one, the above saved it).
157 // Otherwise bring back whatever was previously saved (if anything),
158 // falling back to the empty string if nothing was stored.
159 if ( this.setAttribute ) {
160 this.setAttribute( "class",
161 className || value === false ?
162 "" :
163 dataPriv.get( this, "__className__" ) || ""
164 );
165 }
166 }
167 } );
168 },
169  
170 hasClass: function( selector ) {
171 var className, elem,
172 i = 0;
173  
174 className = " " + selector + " ";
175 while ( ( elem = this[ i++ ] ) ) {
176 if ( elem.nodeType === 1 &&
177 ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
178 return true;
179 }
180 }
181  
182 return false;
183 }
184 } );
185  
186 } );