annotate default/node_modules/jquery/src/attributes/classes.js @ 0:1d038bc9b3d2 default tip

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