Made sure that .removeClass(null) doesn't throw an exception. Fixes #3847.
authorJohn Resig <jeresig@gmail.com>
Tue, 20 Jan 2009 17:33:25 +0000 (17:33 +0000)
committerJohn Resig <jeresig@gmail.com>
Tue, 20 Jan 2009 17:33:25 +0000 (17:33 +0000)
src/core.js
test/unit/core.js

index 585b200..5c37858 100644 (file)
@@ -708,7 +708,7 @@ jQuery.extend({
 
                // internal only, use hasClass("class")
                has: function( elem, className ) {
-                       return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
+                       return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
                }
        },
 
index aec334e..316d9e4 100644 (file)
@@ -1557,7 +1557,7 @@ test("addClass(String)", function() {
 });
 
 test("removeClass(String) - simple", function() {
-       expect(4);
+       expect(5);
        
        var $divs = jQuery('div');
        
@@ -1566,13 +1566,17 @@ test("removeClass(String) - simple", function() {
        ok( !$divs.is('.test'), "Remove Class" );
 
        reset();
-       
+
        $divs.addClass("test").addClass("foo").addClass("bar");
        $divs.removeClass("test").removeClass("bar").removeClass("foo");
        
        ok( !$divs.is('.test,.bar,.foo'), "Remove multiple classes" );
 
        reset();
+
+       // Make sure that a null value doesn't cause problems
+       $divs.eq(0).addClass("test").removeClass(null);
+       ok( $divs.eq(0).is('.test'), "Null value passed to removeClass" );
        
        $divs.eq(0).addClass("test").removeClass("");
        ok( $divs.eq(0).is('.test'), "Empty string passed to removeClass" );