Changed implementation of removeClass: No more regex, tested and working in FF1.5...
[jquery.git] / src / jquery / jquery.js
index 5fd368a..b7715be 100644 (file)
@@ -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 )
@@ -3031,6 +3044,8 @@ jQuery.macros = {
                 * @before <p>Hello</p><div><span>Hello Again</span></div><p>And Again</p>
                 * @result [ <span>Hello Again</span> ]
                 *
+                * @test isSet( $("#foo").children().get(), q("sndp", "en", "sap"), "Check for children" );
+                *
                 * @name children
                 * @type jQuery
                 * @cat DOM/Traversing
@@ -3044,6 +3059,8 @@ jQuery.macros = {
                 * @before <div><span>Hello</span><p class="selected">Hello Again</p><p>And Again</p></div>
                 * @result [ <p class="selected">Hello Again</p> ]
                 *
+                * @test isSet( $("#foo").children("[code]").get(), q("sndp", "sap"), "Check for filtered children" ); 
+                *
                 * @name children
                 * @type jQuery
                 * @param String expr An expression to filter the child Elements with
@@ -3173,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