@@ -31,8 +31,64 @@ jQuery.fn.extend({
3131 return this ;
3232 } ,
3333
34+ addClass : function ( value ) {
35+ if ( value && typeof value === "string" ) {
36+ var classNames = ( value || "" ) . split ( / \s + / ) ;
37+
38+ for ( var i = 0 , l = this . length ; i < l ; i ++ ) {
39+ var elem = this [ i ] ;
40+
41+ if ( elem . nodeType === 1 ) {
42+ if ( ! elem . className ) {
43+ elem . className = value ;
44+ } else {
45+ var className = " " + elem . className + " " ;
46+ for ( var c = 0 , cl = classNames . length ; c < cl ; c ++ ) {
47+ if ( className . indexOf ( " " + classNames [ c ] + " " ) < 0 ) {
48+ elem . className += " " + classNames [ c ] ;
49+ }
50+ }
51+ }
52+ }
53+ }
54+ }
55+
56+ return this ;
57+ } ,
58+
59+ removeClass : function ( value ) {
60+ if ( ( value && typeof value === "string" ) || value === undefined ) {
61+ var classNames = ( value || "" ) . split ( / \s + / ) ;
62+
63+ for ( var i = 0 , l = this . length ; i < l ; i ++ ) {
64+ var elem = this [ i ] ;
65+
66+ if ( elem . nodeType === 1 && elem . className ) {
67+ if ( value ) {
68+ var className = " " + elem . className + " " ;
69+ for ( var c = 0 , cl = classNames . length ; c < cl ; c ++ ) {
70+ className = className . replace ( " " + classNames [ c ] + " " , " " ) ;
71+ }
72+ elem . className = className . substring ( 1 , className . length - 1 ) ;
73+ } else {
74+ elem . className = "" ;
75+ }
76+ }
77+ }
78+ }
79+
80+ return this ;
81+ } ,
82+
3483 hasClass : function ( selector ) {
35- return ! ! selector && this . is ( "." + selector ) ;
84+ var className = " " + selector + " " ;
85+ for ( var i = 0 , l = this . length ; i < l ; i ++ ) {
86+ if ( ( " " + this [ i ] . className + " " ) . indexOf ( className ) > - 1 ) {
87+ return true ;
88+ }
89+ }
90+
91+ return false ;
3692 } ,
3793
3894 val : function ( value ) {
@@ -125,14 +181,6 @@ jQuery.each({
125181 this . removeAttribute ( name ) ;
126182 } ,
127183
128- addClass : function ( classNames ) {
129- jQuery . className . add ( this , classNames ) ;
130- } ,
131-
132- removeClass : function ( classNames ) {
133- jQuery . className . remove ( this , classNames ) ;
134- } ,
135-
136184 toggleClass : function ( classNames , state ) {
137185 var type = typeof classNames ;
138186 if ( type === "string" ) {
@@ -141,8 +189,8 @@ jQuery.each({
141189 classNames = classNames . split ( / \s + / ) ;
142190 while ( ( className = classNames [ i ++ ] ) ) {
143191 // check each className given, space seperated list
144- state = isBool ? state : ! jQuery . className . has ( this , className ) ;
145- jQuery . className [ state ? "add " : "remove " ] ( this , className ) ;
192+ state = isBool ? state : ! jQuery ( this ) . hasClass ( className ) ;
193+ jQuery ( this ) [ state ? "addClass " : "removeClass " ] ( className ) ;
146194 }
147195 } else if ( type === "undefined" || type === "boolean" ) {
148196 if ( this . className ) {
@@ -160,31 +208,6 @@ jQuery.each({
160208} ) ;
161209
162210jQuery . extend ( {
163- className : {
164- // internal only, use addClass("class")
165- add : function ( elem , classNames ) {
166- jQuery . each ( ( classNames || "" ) . split ( / \s + / ) , function ( i , className ) {
167- if ( elem . nodeType == 1 && ! jQuery . className . has ( elem . className , className ) )
168- elem . className += ( elem . className ? " " : "" ) + className ;
169- } ) ;
170- } ,
171-
172- // internal only, use removeClass("class")
173- remove : function ( elem , classNames ) {
174- if ( elem . nodeType == 1 )
175- elem . className = classNames !== undefined ?
176- jQuery . grep ( elem . className . split ( / \s + / ) , function ( className ) {
177- return ! jQuery . className . has ( classNames , className ) ;
178- } ) . join ( " " ) :
179- "" ;
180- } ,
181-
182- // internal only, use hasClass("class")
183- has : function ( elem , className ) {
184- return elem && jQuery . inArray ( className , ( elem . className || elem ) . toString ( ) . split ( / \s + / ) ) > - 1 ;
185- }
186- } ,
187-
188211 attr : function ( elem , name , value ) {
189212 // don't set attributes on text and comment nodes
190213 if ( ! elem || elem . nodeType == 3 || elem . nodeType == 8 )
0 commit comments