Fixed some bugs relating to the setter arg change in val and html. Also optimized the code in val a bit.

This commit is contained in:
jeresig 2010-01-07 09:53:16 -05:00
parent 2526e29353
commit 4681216c4b
2 changed files with 14 additions and 19 deletions

View File

@ -195,29 +195,24 @@ jQuery.fn.extend({
return undefined;
}
// Typecast once if the value is a number
if ( typeof value === "number" ) {
value += "";
}
var val = value;
var isFunction = jQuery.isFunction(value);
return this.each(function(i) {
var self = jQuery(this);
var self = jQuery(this), val = value;
if ( jQuery.isFunction(value) ) {
if ( this.nodeType !== 1 ) {
return;
}
if ( isFunction ) {
val = value.call(this, i, self.val());
}
// Typecast each time if the value is a Function and the appended
// value is therefore different each time.
if ( typeof val === "number" ) {
val += "";
}
}
if ( this.nodeType !== 1 ) {
return;
}
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
this.checked = jQuery.inArray( self.val(), val ) >= 0;
@ -226,7 +221,7 @@ jQuery.fn.extend({
var values = jQuery.makeArray(val);
jQuery( "option", this ).each(function() {
this.selected = jQuery.inArray( self.val(), values ) >= 0;
this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
});
if ( !values.length ) {

View File

@ -173,7 +173,7 @@ jQuery.fn.extend({
html: function( value ) {
if ( value === undefined ) {
return this[0] ?
return this[0] && this[0].nodeType === 1 ?
this[0].innerHTML.replace(rinlinejQuery, "") :
null;