Allow similarly named classes (regression from 9499) and switch class retrieval to property when passing class to value functions. Fixes #9617.
This commit is contained in:
parent
124817e668
commit
96501d38a9
2 changed files with 20 additions and 15 deletions
|
@ -37,12 +37,12 @@ jQuery.fn.extend({
|
|||
},
|
||||
|
||||
addClass: function( value ) {
|
||||
var classNames, i, l, elem, setClass, c, cl;
|
||||
var classNames, i, l, elem,
|
||||
setClass, c, cl;
|
||||
|
||||
if ( jQuery.isFunction( value ) ) {
|
||||
return this.each(function( j ) {
|
||||
var self = jQuery( this );
|
||||
self.addClass( value.call(this, j, self.attr("class") || "") );
|
||||
jQuery( this ).addClass( value.call(this, j, this.className) );
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -57,11 +57,11 @@ jQuery.fn.extend({
|
|||
elem.className = value;
|
||||
|
||||
} else {
|
||||
setClass = elem.className;
|
||||
setClass = " " + elem.className + " ";
|
||||
|
||||
for ( c = 0, cl = classNames.length; c < cl; c++ ) {
|
||||
if ( !~setClass.indexOf(classNames[ c ]) ) {
|
||||
setClass += " " + classNames[ c ];
|
||||
if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
|
||||
setClass += classNames[ c ] + " ";
|
||||
}
|
||||
}
|
||||
elem.className = jQuery.trim( setClass );
|
||||
|
@ -78,8 +78,7 @@ jQuery.fn.extend({
|
|||
|
||||
if ( jQuery.isFunction( value ) ) {
|
||||
return this.each(function( j ) {
|
||||
var self = jQuery( this );
|
||||
self.removeClass( value.call(this, j, self.attr("class")) );
|
||||
jQuery( this ).removeClass( value.call(this, j, this.className) );
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -112,9 +111,8 @@ jQuery.fn.extend({
|
|||
isBool = typeof stateVal === "boolean";
|
||||
|
||||
if ( jQuery.isFunction( value ) ) {
|
||||
return this.each(function(i) {
|
||||
var self = jQuery(this);
|
||||
self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
|
||||
return this.each(function( i ) {
|
||||
jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -762,7 +762,8 @@ test("val(select) after form.reset() (Bug #2551)", function() {
|
|||
});
|
||||
|
||||
var testAddClass = function(valueObj) {
|
||||
expect(7);
|
||||
expect(9);
|
||||
|
||||
var div = jQuery("div");
|
||||
div.addClass( valueObj("test") );
|
||||
var pass = true;
|
||||
|
@ -791,10 +792,16 @@ var testAddClass = function(valueObj) {
|
|||
div.addClass( valueObj("bar baz") );
|
||||
equals( div.attr("class"), "foo bar baz", "Make sure there isn't too much trimming." );
|
||||
|
||||
div.removeAttr("class");
|
||||
div.removeClass();
|
||||
div.addClass( valueObj("foo") ).addClass( valueObj("foo") )
|
||||
equal( div.attr("class"), "foo", "Do not add the same class twice in separate calls." );
|
||||
div.removeAttr("class");
|
||||
|
||||
div.addClass( valueObj("fo") );
|
||||
equal( div.attr("class"), "foo fo", "Adding a similar class does not get interrupted." );
|
||||
div.removeClass().addClass("wrap2");
|
||||
ok( div.addClass("wrap").hasClass("wrap"), "Can add similarly named classes");
|
||||
|
||||
div.removeClass();
|
||||
div.addClass( valueObj("bar bar") );
|
||||
equal( div.attr("class"), "bar", "Do not add the same class twice in the same call." );
|
||||
};
|
||||
|
@ -959,7 +966,7 @@ test("toggleClass(Function[, boolean])", function() {
|
|||
test("toggleClass(Fucntion[, boolean]) with incoming value", function() {
|
||||
expect(14);
|
||||
|
||||
var e = jQuery("#firstp"), old = e.attr("class");
|
||||
var e = jQuery("#firstp"), old = e.attr("class") || "";
|
||||
ok( !e.is(".test"), "Assert class not present" );
|
||||
|
||||
e.toggleClass(function(i, val) {
|
||||
|
|
Loading…
Reference in a new issue