Merge branch 'master' of github.com:jquery/jquery into 1.7/callbacks
This commit is contained in:
commit
0de05611bb
5 changed files with 112 additions and 58 deletions
|
@ -6,7 +6,7 @@ var rclass = /[\n\t\r]/g,
|
|||
rtype = /^(?:button|input)$/i,
|
||||
rfocusable = /^(?:button|input|object|select|textarea)$/i,
|
||||
rclickable = /^a(?:rea)?$/i,
|
||||
rboolean = /^(?:autofocus|autoplay|async|checked|controls|declare|defer|disabled|draggable|formnovalidate|hidden|ismap|loop|multiple|muted|noresize|noshade|nowrap|novalidate|open|pubdate|readonly|required|reversed|scoped|seamless|selected|truespeed)$/i,
|
||||
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
|
||||
rinvalidChar = /\:/,
|
||||
formHook, boolHook;
|
||||
|
||||
|
@ -219,7 +219,8 @@ jQuery.extend({
|
|||
},
|
||||
select: {
|
||||
get: function( elem ) {
|
||||
var index = elem.selectedIndex,
|
||||
var value,
|
||||
index = elem.selectedIndex,
|
||||
values = [],
|
||||
options = elem.options,
|
||||
one = elem.type === "select-one";
|
||||
|
@ -310,15 +311,15 @@ jQuery.extend({
|
|||
hooks = jQuery.attrHooks[ name ];
|
||||
|
||||
if ( !hooks ) {
|
||||
// Use formHook for forms and if the name contains certain characters
|
||||
if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
|
||||
hooks = formHook;
|
||||
|
||||
// Use boolHook for boolean attributes
|
||||
} else if ( rboolean.test( name ) &&
|
||||
(typeof value === "boolean" || value === undefined) ) {
|
||||
if ( rboolean.test( name ) &&
|
||||
(typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) {
|
||||
|
||||
hooks = boolHook;
|
||||
|
||||
// Use formHook for forms and if the name contains certain characters
|
||||
} else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
|
||||
hooks = formHook;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -351,6 +352,7 @@ jQuery.extend({
|
|||
},
|
||||
|
||||
removeAttr: function( elem, name ) {
|
||||
var propName;
|
||||
if ( elem.nodeType === 1 ) {
|
||||
name = jQuery.attrFix[ name ] || name;
|
||||
|
||||
|
@ -363,8 +365,8 @@ jQuery.extend({
|
|||
}
|
||||
|
||||
// Set corresponding property to false for boolean attributes
|
||||
if ( rboolean.test( name ) ) {
|
||||
elem[ jQuery.propFix[ name ] || name ] = false;
|
||||
if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
|
||||
elem[ propName ] = false;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -464,13 +466,19 @@ boolHook = {
|
|||
undefined;
|
||||
},
|
||||
set: function( elem, value, name ) {
|
||||
var propName;
|
||||
if ( value === false ) {
|
||||
// Remove boolean attributes when set to false
|
||||
jQuery.removeAttr( elem, name );
|
||||
} else {
|
||||
// value is true since we know at this point it's type boolean and not false
|
||||
// Set boolean attributes to the same name and set the DOM property
|
||||
elem[ jQuery.propFix[ name ] || name ] = value;
|
||||
propName = jQuery.propFix[ name ] || name;
|
||||
if ( propName in elem ) {
|
||||
// Only set the IDL specifically if it already exists on the element
|
||||
elem[ propName ] = value;
|
||||
}
|
||||
|
||||
elem.setAttribute( name, name.toLowerCase() );
|
||||
}
|
||||
return name;
|
||||
|
@ -487,12 +495,9 @@ if ( !jQuery.support.getSetAttribute ) {
|
|||
formHook = jQuery.attrHooks.name = jQuery.attrHooks.value = jQuery.valHooks.button = {
|
||||
get: function( elem, name ) {
|
||||
var ret;
|
||||
if ( name === "value" && !jQuery.nodeName( elem, "button" ) ) {
|
||||
return elem.getAttribute( name );
|
||||
}
|
||||
ret = elem.getAttributeNode( name );
|
||||
// Return undefined if not specified instead of empty string
|
||||
return ret && ret.specified ?
|
||||
// Return undefined if nodeValue is empty string
|
||||
return ret && ret.nodeValue !== "" ?
|
||||
ret.nodeValue :
|
||||
undefined;
|
||||
},
|
||||
|
|
|
@ -284,7 +284,7 @@ function dataAttr( elem, key, data ) {
|
|||
// If nothing was found internally, try to fetch any
|
||||
// data from the HTML5 data-* attribute
|
||||
if ( data === undefined && elem.nodeType === 1 ) {
|
||||
name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();
|
||||
var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();
|
||||
|
||||
data = elem.getAttribute( name );
|
||||
|
||||
|
|
37
src/effects.js
vendored
37
src/effects.js
vendored
|
@ -126,6 +126,9 @@ jQuery.fn.extend({
|
|||
return this.each( optall.complete, [ false ] );
|
||||
}
|
||||
|
||||
// Do not change referenced properties as per-property easing will be lost
|
||||
prop = jQuery.extend( {}, prop );
|
||||
|
||||
return this[ optall.queue === false ? "each" : "queue" ](function() {
|
||||
// XXX 'this' does not always have a nodeName when running the
|
||||
// test suite
|
||||
|
@ -134,7 +137,7 @@ jQuery.fn.extend({
|
|||
jQuery._mark( this );
|
||||
}
|
||||
|
||||
var opt = jQuery.extend({}, optall),
|
||||
var opt = jQuery.extend( {}, optall ),
|
||||
isElement = this.nodeType === 1,
|
||||
hidden = isElement && jQuery(this).is(":hidden"),
|
||||
name, val, p,
|
||||
|
@ -153,10 +156,18 @@ jQuery.fn.extend({
|
|||
delete prop[ p ];
|
||||
}
|
||||
|
||||
val = prop[name];
|
||||
val = prop[ name ];
|
||||
|
||||
// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
|
||||
if ( jQuery.isArray( val ) ) {
|
||||
opt.animatedProperties[ name ] = val[ 1 ];
|
||||
val = prop[ name ] = val[ 0 ];
|
||||
} else {
|
||||
opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
|
||||
}
|
||||
|
||||
if ( val === "hide" && hidden || val === "show" && !hidden ) {
|
||||
return opt.complete.call(this);
|
||||
return opt.complete.call( this );
|
||||
}
|
||||
|
||||
if ( isElement && ( name === "height" || name === "width" ) ) {
|
||||
|
@ -175,7 +186,7 @@ jQuery.fn.extend({
|
|||
this.style.display = "inline-block";
|
||||
|
||||
} else {
|
||||
display = defaultDisplay(this.nodeName);
|
||||
display = defaultDisplay( this.nodeName );
|
||||
|
||||
// inline-level elements accept inline-block;
|
||||
// block-level elements need to be inline with layout
|
||||
|
@ -189,11 +200,6 @@ jQuery.fn.extend({
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
|
||||
opt.animatedProperties[name] = jQuery.isArray( val ) ?
|
||||
val[1]:
|
||||
opt.specialEasing && opt.specialEasing[name] || opt.easing || 'swing';
|
||||
}
|
||||
|
||||
if ( opt.overflow != null ) {
|
||||
|
@ -202,19 +208,18 @@ jQuery.fn.extend({
|
|||
|
||||
for ( p in prop ) {
|
||||
e = new jQuery.fx( this, opt, p );
|
||||
|
||||
val = prop[p];
|
||||
val = prop[ p ];
|
||||
|
||||
if ( rfxtypes.test(val) ) {
|
||||
e[ val === "toggle" ? hidden ? "show" : "hide" : val ]();
|
||||
|
||||
} else {
|
||||
parts = rfxnum.exec(val);
|
||||
parts = rfxnum.exec( val );
|
||||
start = e.cur();
|
||||
|
||||
if ( parts ) {
|
||||
end = parseFloat( parts[2] );
|
||||
unit = parts[3] || ( jQuery.cssNumber[ name ] ? "" : "px" );
|
||||
unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
|
||||
|
||||
// We need to compute starting value
|
||||
if ( unit !== "px" ) {
|
||||
|
@ -225,7 +230,7 @@ jQuery.fn.extend({
|
|||
|
||||
// If a +=/-= token was provided, we're doing a relative animation
|
||||
if ( parts[1] ) {
|
||||
end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
|
||||
end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
|
||||
}
|
||||
|
||||
e.custom( start, end, unit );
|
||||
|
@ -501,10 +506,10 @@ jQuery.fx.prototype = {
|
|||
this.now = t;
|
||||
} else {
|
||||
n = t - this.startTime;
|
||||
|
||||
this.state = n / options.duration;
|
||||
|
||||
// Perform the easing function, defaults to swing
|
||||
this.pos = jQuery.easing[options.animatedProperties[this.prop]](this.state, n, 0, 1, options.duration);
|
||||
this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration );
|
||||
this.now = this.start + ((this.end - this.start) * this.pos);
|
||||
}
|
||||
// Perform the next step of the animation
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue