@@ -354,18 +354,32 @@ function jqLiteRemoveClass(element, cssClasses) {
354
354
}
355
355
356
356
function jqLiteAddClass ( element , cssClasses ) {
357
- if ( cssClasses && element . setAttribute ) {
358
- var existingClasses = ( ' ' + ( element . getAttribute ( 'class' ) || '' ) + ' ' )
359
- . replace ( / [ \n \t ] / g, " " ) ;
360
-
361
- forEach ( cssClasses . split ( ' ' ) , function ( cssClass ) {
362
- cssClass = trim ( cssClass ) ;
363
- if ( existingClasses . indexOf ( ' ' + cssClass + ' ' ) === - 1 ) {
364
- existingClasses += cssClass + ' ' ;
357
+ if ( cssClasses ) {
358
+
359
+ // if browser and element support classList api use it
360
+ if ( element . classList ) {
361
+ cssClasses = trim ( cssClasses ) ;
362
+ if ( cssClasses ) {
363
+ cssClasses = cssClasses . split ( / \s + / ) ;
364
+ if ( cssClasses . length === 1 ) {
365
+ element . classList . add ( cssClasses [ 0 ] )
366
+ } else {
367
+ element . classList . add . apply ( element . classList , cssClasses ) ;
368
+ }
365
369
}
366
- } ) ;
370
+ } else if ( element . setAttribute ) {
371
+ var existingClasses = ( ' ' + ( element . getAttribute ( 'class' ) || '' ) + ' ' )
372
+ . replace ( / [ \n \t ] / g, " " ) ;
373
+
374
+ forEach ( cssClasses . split ( ' ' ) , function ( cssClass ) {
375
+ cssClass = trim ( cssClass ) ;
376
+ if ( existingClasses . indexOf ( ' ' + cssClass + ' ' ) === - 1 ) {
377
+ existingClasses += cssClass + ' ' ;
378
+ }
379
+ } ) ;
367
380
368
- element . setAttribute ( 'class' , trim ( existingClasses ) ) ;
381
+ element . setAttribute ( 'class' , trim ( existingClasses ) ) ;
382
+ }
369
383
}
370
384
}
371
385
0 commit comments