aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2006-09-22 21:07:04 +0000
committerJörn Zaefferer <joern.zaefferer@gmail.com>2006-09-22 21:07:04 +0000
commit94b0bf5f2b7a4003196a679649567a13d0f13ad0 (patch)
treecda956f6de03c21c894396dd542b1ff401747d4e /src
parentca5b83c5c9619e12827f2e92adb6e6c5708df88e (diff)
downloadjquery-94b0bf5f2b7a4003196a679649567a13d0f13ad0.tar.gz
jquery-94b0bf5f2b7a4003196a679649567a13d0f13ad0.zip
Changed implementation of removeClass: No more regex, tested and working in FF1.5, IE6 and Opera9 (tests added)- see http://jquery.com/discuss/2006-September/012088/
Diffstat (limited to 'src')
-rw-r--r--src/jquery/jquery.js23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js
index a0d877517..b7715be35 100644
--- a/src/jquery/jquery.js
+++ b/src/jquery/jquery.js
@@ -1373,9 +1373,22 @@ jQuery.extend({
o.className += ( o.className ? " " : "" ) + c;
},
remove: function(o,c){
+ /*
o.className = !c ? "" :
o.className.replace(
- new RegExp("(^|\\s*\\b[^-])"+c+"($|\\b(?=[^-]))", "g"), "");
+ new RegExp("(^|\\s*\\b[^-])"+c+"($|\\b(?=[^-]))", "g"), "");*/
+ if( !c ) {
+ o.className = "";
+ } else {
+ var classes = o.className.split(" ");
+ for(var i=0; i<classes.length; i++) {
+ if(classes[i] == c) {
+ classes.splice(i, 1);
+ break;
+ }
+ }
+ o.className = classes.join(' ');
+ }
},
has: function(e,a) {
if ( e.className != undefined )
@@ -3177,6 +3190,14 @@ jQuery.macros = {
* }
* ok( pass, "Remove Class" );
*
+ * @test var div = $("div").addClass("test").addClass("foo").addClass("bar");
+ * div.removeClass("test").removeClass("bar").removeClass("foo");
+ * var pass = true;
+ * for ( var i = 0; i < div.size(); i++ ) {
+ * if ( div.get(i).className.match(/test|bar|foo/) ) pass = false;
+ * }
+ * ok( pass, "Remove multiple classes" );
+ *
* @name removeClass
* @type jQuery
* @param String class A CSS class to remove from the elements