-
-
Save mpouncy-netpulse/7811564 to your computer and use it in GitHub Desktop.
jQuery alterClass plugin: Remove element classes with wildcard matching. Optionally add classes.
This file contains hidden or 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) | |
* Updated 2013 by Mike Pouncy (scrupl.es) - Condensed code, removed unneeded vars. | |
* Free under terms of the MIT license: http://www.opensource.org/licenses/mit-license.php | |
* | |
*/ | |
;(function ( $ ) { | |
$.fn.alterClass = function jQueryAlterClass( removals, additions ) { | |
if ( removals.indexOf( '*' ) === -1 ) { | |
// Use native jQuery methods if there is no wild-card matching | |
this.removeClass( removals ); | |
} else { | |
var pattern = new RegExp( '\\s' | |
+ removals | |
.replace( /\*/g, '[A-Za-z0-9-_]+' ) | |
.split( ' ' ) | |
.join( '\\s|\\s' ) | |
+ '\\s', 'g' ); | |
this.each( function forEachAlteredClass( i, it ) { | |
for ( var cn = ' ' + it.className + ' '; pattern.test( cn ); ) { | |
cn = cn.replace( pattern, ' ' ); | |
} | |
it.className = $.trim( cn ); | |
}); | |
} | |
return( additions ? this.addClass( additions ) : this ); | |
}; | |
})( jQuery ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Condensed code, removed unneeded vars.