diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2006-09-22 21:07:04 +0000 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2006-09-22 21:07:04 +0000 |
commit | 94b0bf5f2b7a4003196a679649567a13d0f13ad0 (patch) | |
tree | cda956f6de03c21c894396dd542b1ff401747d4e /src | |
parent | ca5b83c5c9619e12827f2e92adb6e6c5708df88e (diff) | |
download | jquery-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.js | 23 |
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 |