jQuery alterClass plugin: Remove element classes with wildcard matching. Optionally add classes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* jQuery alterClass plugin | |
* | |
* Remove element classes with wildcard matching. Optionally add classes: | |
* $( '#foo' ).alterClass( 'foo-* bar-*', 'foobar' ) | |
* | |
* Copyright (c) 2011 Pete Boere (the-echoplex.net) | |
* Free under terms of the MIT license: http://www.opensource.org/licenses/mit-license.php | |
* | |
*/ | |
(function ( $ ) { | |
$.fn.alterClass = function ( removals, additions ) { | |
var self = this; | |
if ( removals.indexOf( '*' ) === -1 ) { | |
// Use native jQuery methods if there is no wildcard matching | |
self.removeClass( removals ); | |
return !additions ? self : self.addClass( additions ); | |
} | |
var patt = new RegExp( '\\s' + | |
removals. | |
replace( /\*/g, '[A-Za-z0-9-_]+' ). | |
split( ' ' ). | |
join( '\\s|\\s' ) + | |
'\\s', 'g' ); | |
self.each( function ( i, it ) { | |
var cn = ' ' + it.className + ' '; | |
while ( patt.test( cn ) ) { | |
cn = cn.replace( patt, ' ' ); | |
} | |
it.className = $.trim( cn ); | |
}); | |
return !additions ? self : self.addClass( additions ); | |
}; | |
})( jQuery ); |
Good work! Very helpful...
Thanks for the code, very helpful for me !
Great plugin it should be implement in jquery 1.12 or 2.2 !
Good work!
Great function – thanks a lot.
It also works with Zepto. Just pass in Zepto
instead of jQuery
and it just works.
Great Work! Thanks a lot ;)
Very nice! Thanks a ton!
Wonderful, thank you very much!
Very useful, thanks
Good work :)
thanks a lot..
Nice. Very handy. +1
Nice ! thanks a lot
Nice! Thanks +1
Saved my time... Thank you!
正是我需要的
Saved a lot of my time, thanks
Great work man. and simple yet fast solution. Thanks!
thanks
This is nice bro .. thanks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is really useful! Is it possible to replace many classes pattern with one call? For example
'alert-* status-* type-*'
Currently this method only seems to work if the classes are in that order. Ideally, it would work regardless of the order.
Thoughts?