A first pass at making sure that all the setter function arguments receive the index of the element and a relevant value to work with. Fixes #5763.
This commit is contained in:
parent
84dd82eb1a
commit
600d314538
|
@ -12,10 +12,27 @@ jQuery.fn.extend({
|
||||||
return access( this, name, value, true, jQuery.attr );
|
return access( this, name, value, true, jQuery.attr );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
removeAttr: function( name ) {
|
||||||
|
if ( jQuery.isFunction( name ) ) {
|
||||||
|
return this.each(function(i) {
|
||||||
|
var self = jQuery(this);
|
||||||
|
self.removeAttr( name.call(this, i, self.attr(name)) );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each(function(){
|
||||||
|
jQuery.attr( this, name, "" );
|
||||||
|
if ( this.nodeType === 1 ) {
|
||||||
|
this.removeAttribute( name );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
addClass: function( value ) {
|
addClass: function( value ) {
|
||||||
if ( jQuery.isFunction(value) ) {
|
if ( jQuery.isFunction(value) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
jQuery(this).addClass( value.call(this) );
|
var self = jQuery(this);
|
||||||
|
self.addClass( value.call(this, i, self.attr("class")) );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,8 +63,9 @@ jQuery.fn.extend({
|
||||||
|
|
||||||
removeClass: function( value ) {
|
removeClass: function( value ) {
|
||||||
if ( jQuery.isFunction(value) ) {
|
if ( jQuery.isFunction(value) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
jQuery(this).removeClass( value.call(this) );
|
var self = jQuery(this);
|
||||||
|
self.removeClass( value.call(this, i, self.attr("class")) );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,6 +93,40 @@ jQuery.fn.extend({
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
toggleClass: function( classNames, state ) {
|
||||||
|
var type = typeof classNames;
|
||||||
|
|
||||||
|
if ( jQuery.isFunction( classNames ) ) {
|
||||||
|
return this.each(function(i) {
|
||||||
|
var self = jQuery(this);
|
||||||
|
self.toggleClass( classNames.call(this, i, self.attr("class")), state );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each(function(){
|
||||||
|
if ( type === "string" ) {
|
||||||
|
// toggle individual class names
|
||||||
|
var isBool = typeof state === "boolean", className, i = 0,
|
||||||
|
classNames = classNames.split( rspace );
|
||||||
|
|
||||||
|
while ( (className = classNames[ i++ ]) ) {
|
||||||
|
// check each className given, space seperated list
|
||||||
|
state = isBool ? state : !jQuery(this).hasClass( className );
|
||||||
|
jQuery(this)[ state ? "addClass" : "removeClass" ]( className );
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if ( type === "undefined" || type === "boolean" ) {
|
||||||
|
if ( this.className ) {
|
||||||
|
// store className if set
|
||||||
|
jQuery.data( this, "__className__", this.className );
|
||||||
|
}
|
||||||
|
|
||||||
|
// toggle whole className
|
||||||
|
this.className = this.className || classNames === false ? "" : jQuery.data( this, "__className__" ) || "";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
hasClass: function( selector ) {
|
hasClass: function( selector ) {
|
||||||
var className = " " + selector + " ";
|
var className = " " + selector + " ";
|
||||||
for ( var i = 0, l = this.length; i < l; i++ ) {
|
for ( var i = 0, l = this.length; i < l; i++ ) {
|
||||||
|
@ -149,9 +201,11 @@ jQuery.fn.extend({
|
||||||
|
|
||||||
var val = value;
|
var val = value;
|
||||||
|
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
|
var self = jQuery(this);
|
||||||
|
|
||||||
if ( jQuery.isFunction(value) ) {
|
if ( jQuery.isFunction(value) ) {
|
||||||
val = value.call(this);
|
val = value.call(this, i, self.val());
|
||||||
|
|
||||||
// Typecast each time if the value is a Function and the appended
|
// Typecast each time if the value is a Function and the appended
|
||||||
// value is therefore different each time.
|
// value is therefore different each time.
|
||||||
|
@ -165,13 +219,13 @@ jQuery.fn.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
|
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
|
||||||
this.checked = jQuery.inArray( jQuery(this).val(), val ) >= 0;
|
this.checked = jQuery.inArray( self.val(), val ) >= 0;
|
||||||
|
|
||||||
} else if ( jQuery.nodeName( this, "select" ) ) {
|
} else if ( jQuery.nodeName( this, "select" ) ) {
|
||||||
var values = jQuery.makeArray(val);
|
var values = jQuery.makeArray(val);
|
||||||
|
|
||||||
jQuery( "option", this ).each(function() {
|
jQuery( "option", this ).each(function() {
|
||||||
this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
|
this.selected = jQuery.inArray( self.val(), values ) >= 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
if ( !values.length ) {
|
if ( !values.length ) {
|
||||||
|
@ -185,50 +239,6 @@ jQuery.fn.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
jQuery.each({
|
|
||||||
removeAttr: function( name ) {
|
|
||||||
jQuery.attr( this, name, "" );
|
|
||||||
if ( this.nodeType === 1 ) {
|
|
||||||
this.removeAttribute( name );
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
toggleClass: function( classNames, state ) {
|
|
||||||
var type = typeof classNames;
|
|
||||||
|
|
||||||
if ( type === "string" ) {
|
|
||||||
// toggle individual class names
|
|
||||||
var isBool = typeof state === "boolean", className, i = 0,
|
|
||||||
classNames = classNames.split( rspace );
|
|
||||||
|
|
||||||
while ( (className = classNames[ i++ ]) ) {
|
|
||||||
// check each className given, space seperated list
|
|
||||||
state = isBool ? state : !jQuery(this).hasClass( className );
|
|
||||||
jQuery(this)[ state ? "addClass" : "removeClass" ]( className );
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if ( type === "undefined" || type === "boolean" ) {
|
|
||||||
if ( this.className ) {
|
|
||||||
// store className if set
|
|
||||||
jQuery.data( this, "__className__", this.className );
|
|
||||||
}
|
|
||||||
|
|
||||||
// toggle whole className
|
|
||||||
this.className = this.className || classNames === false ? "" : jQuery.data( this, "__className__" ) || "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, function( name, fn ) {
|
|
||||||
jQuery.fn[ name ] = function( val, state ) {
|
|
||||||
if ( jQuery.isFunction( val ) ) {
|
|
||||||
return this.each(function() {
|
|
||||||
jQuery(this)[ name ]( val.call(this), state );
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.each( fn, arguments );
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
attrFn: {
|
attrFn: {
|
||||||
val: true,
|
val: true,
|
||||||
|
|
|
@ -775,7 +775,7 @@ function access( elems, key, value, exec, fn, pass ) {
|
||||||
exec = exec && jQuery.isFunction(value);
|
exec = exec && jQuery.isFunction(value);
|
||||||
|
|
||||||
for ( var i = 0; i < length; i++ ) {
|
for ( var i = 0; i < length; i++ ) {
|
||||||
fn( elems[i], key, exec ? value.call( elems[i], i ) : value, pass );
|
fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
|
||||||
}
|
}
|
||||||
|
|
||||||
return elems;
|
return elems;
|
||||||
|
|
|
@ -33,8 +33,9 @@ if ( !jQuery.support.htmlSerialize ) {
|
||||||
jQuery.fn.extend({
|
jQuery.fn.extend({
|
||||||
text: function( text ) {
|
text: function( text ) {
|
||||||
if ( jQuery.isFunction(text) ) {
|
if ( jQuery.isFunction(text) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
return jQuery(this).text( text.call(this) );
|
var self = jQuery(this);
|
||||||
|
return self.text( text.call(this, i, self.text()) );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,8 +48,8 @@ jQuery.fn.extend({
|
||||||
|
|
||||||
wrapAll: function( html ) {
|
wrapAll: function( html ) {
|
||||||
if ( jQuery.isFunction( html ) ) {
|
if ( jQuery.isFunction( html ) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
jQuery(this).wrapAll( html.apply(this, arguments) );
|
jQuery(this).wrapAll( html.call(this, i) );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,9 +229,10 @@ jQuery.fn.extend({
|
||||||
var results, first, value = args[0], scripts = [];
|
var results, first, value = args[0], scripts = [];
|
||||||
|
|
||||||
if ( jQuery.isFunction(value) ) {
|
if ( jQuery.isFunction(value) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
args[0] = value.call(this);
|
var self = jQuery(this);
|
||||||
return jQuery(this).domManip( args, table, callback );
|
args[0] = value.call(this, i, table ? self.html() : undefined);
|
||||||
|
return self.domManip( args, table, callback );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue