Commit 243d4cc8 authored by Richard Gibson's avatar Richard Gibson

Don't let removeClass create attributes

parent b9dfcfd7
...@@ -51,11 +51,12 @@ jQuery.fn.extend({ ...@@ -51,11 +51,12 @@ jQuery.fn.extend({
for ( ; i < len; i++ ) { for ( ; i < len; i++ ) {
elem = this[ i ]; elem = this[ i ];
cur = elem.nodeType === 1 && ( elem.className ?
if ( elem.nodeType === 1 ) {
cur = elem.className ?
( " " + elem.className + " " ).replace( rclass, " " ) : ( " " + elem.className + " " ).replace( rclass, " " ) :
" "; " "
);
if ( cur ) {
j = 0; j = 0;
while ( (clazz = classes[j++]) ) { while ( (clazz = classes[j++]) ) {
if ( cur.indexOf( " " + clazz + " " ) < 0 ) { if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
...@@ -87,11 +88,13 @@ jQuery.fn.extend({ ...@@ -87,11 +88,13 @@ jQuery.fn.extend({
for ( ; i < len; i++ ) { for ( ; i < len; i++ ) {
elem = this[ i ]; elem = this[ i ];
if ( elem.nodeType === 1 ) {
// This expression is here for better compressibility (see addClass) // This expression is here for better compressibility (see addClass)
cur = elem.className ? cur = elem.nodeType === 1 && ( elem.className ?
( " " + elem.className + " " ).replace( rclass, " " ) : ( " " + elem.className + " " ).replace( rclass, " " ) :
" "; ""
);
if ( cur ) {
j = 0; j = 0;
while ( (clazz = classes[j++]) ) { while ( (clazz = classes[j++]) ) {
// Remove *all* instances // Remove *all* instances
......
...@@ -1052,38 +1052,36 @@ test( "addClass(Function) with incoming value", function() { ...@@ -1052,38 +1052,36 @@ test( "addClass(Function) with incoming value", function() {
}); });
var testRemoveClass = function(valueObj) { var testRemoveClass = function(valueObj) {
expect( 7 ); expect( 8 );
var $divs = jQuery("div");
$divs.addClass("test").removeClass( valueObj("test") ); var $set = jQuery("div"),
div = document.createElement("div");
ok( !$divs.is(".test"), "Remove Class" ); $set.addClass("test").removeClass( valueObj("test") );
QUnit.reset(); ok( !$set.is(".test"), "Remove Class" );
$divs = jQuery("div");
$divs.addClass("test").addClass("foo").addClass("bar"); $set.addClass("test").addClass("foo").addClass("bar");
$divs.removeClass( valueObj("test") ).removeClass( valueObj("bar") ).removeClass( valueObj("foo") ); $set.removeClass( valueObj("test") ).removeClass( valueObj("bar") ).removeClass( valueObj("foo") );
ok( !$divs.is(".test,.bar,.foo"), "Remove multiple classes" ); ok( !$set.is(".test,.bar,.foo"), "Remove multiple classes" );
QUnit.reset();
$divs = jQuery("div");
// Make sure that a null value doesn't cause problems // Make sure that a null value doesn't cause problems
$divs.eq( 0 ).addClass("test").removeClass( valueObj( null ) ); $set.eq( 0 ).addClass("expected").removeClass( valueObj( null ) );
ok( $divs.eq( 0 ).is(".test"), "Null value passed to removeClass" ); ok( $set.eq( 0 ).is(".expected"), "Null value passed to removeClass" );
$divs.eq( 0 ).addClass("test").removeClass( valueObj("") ); $set.eq( 0 ).addClass("expected").removeClass( valueObj("") );
ok( $divs.eq( 0 ).is(".test"), "Empty string passed to removeClass" ); ok( $set.eq( 0 ).is(".expected"), "Empty string passed to removeClass" );
// using contents will get regular, text, and comment nodes // using contents will get regular, text, and comment nodes
var j = jQuery("#nonnodes").contents(); $set = jQuery("#nonnodes").contents();
j.removeClass( valueObj("asdf") ); $set.removeClass( valueObj("asdf") );
ok( !j.hasClass("asdf"), "Check node,textnode,comment for removeClass" ); ok( !$set.hasClass("asdf"), "Check node,textnode,comment for removeClass" );
jQuery( div ).removeClass( valueObj("foo") );
strictEqual( jQuery( div ).attr("class"), undefined, "removeClass doesn't create a class attribute" );
var div = document.createElement("div");
div.className = " test foo "; div.className = " test foo ";
jQuery( div ).removeClass( valueObj("foo") ); jQuery( div ).removeClass( valueObj("foo") );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment