});
},
- slideDown: function(speed,callback){
- return this.animate({height: "show"}, speed, callback);
- },
-
- slideUp: function(speed,callback){
- return this.animate({height: "hide"}, speed, callback);
- },
-
- slideToggle: function(speed, callback){
- return this.animate({height: "toggle"}, speed, callback);
- },
-
- fadeIn: function(speed, callback){
- return this.animate({opacity: "show"}, speed, callback);
- },
-
- fadeOut: function(speed, callback){
- return this.animate({opacity: "hide"}, speed, callback);
- },
-
fadeTo: function(speed,to,callback){
return this.animate({opacity: to}, speed, callback);
},
var optall = jQuery.speed(speed, easing, callback);
return this[ optall.queue === false ? "each" : "queue" ](function(){
- if ( this.nodeType != 1)
- return false;
-
+
var opt = jQuery.extend({}, optall), p,
- hidden = jQuery(this).is(":hidden"), self = this;
-
+ hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
+ self = this;
+
for ( p in prop ) {
if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
- return jQuery.isFunction(opt.complete) && opt.complete.call(this);
+ return opt.complete.call(this);
- if ( p == "height" || p == "width" ) {
+ if ( ( p == "height" || p == "width" ) && this.style ) {
// Store display property
opt.display = jQuery.css(this, "display");
});
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: { height:"show" },
+ slideUp: { height: "hide" },
+ slideToggle: { height: "toggle" },
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" }
+}, function( name, props ){
+ jQuery.fn[ name ] = function( speed, callback ){
+ return this.animate( props, speed, callback );
+ };
+});
+
var queue = function( elem, type, array ) {
if ( elem ){
opt.duration = (opt.duration && opt.duration.constructor == Number ?
opt.duration :
- jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def;
+ jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds._default;
// Queueing
opt.old = opt.complete;
(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
// Set display property to block for height/width animations
- if ( this.prop == "height" || this.prop == "width" )
+ if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
this.elem.style.display = "block";
},
// Get the current size
cur: function(force){
- if ( this.elem[this.prop] != null && this.elem.style[this.prop] == null )
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
return this.elem[ this.prop ];
var r = parseFloat(jQuery.css(this.elem, this.prop, force));
jQuery.attr(this.elem.style, p, this.options.orig[p]);
}
- // If a callback was provided, execute it
- if ( done && jQuery.isFunction( this.options.complete ) )
+ if ( done )
// Execute the complete function
this.options.complete.call( this.elem );
slow: 600,
fast: 200,
// Default speed
- def: 400
+ _default: 400
},
step: {
- scrollLeft: function(fx){
- fx.elem.scrollLeft = fx.now;
- },
-
- scrollTop: function(fx){
- fx.elem.scrollTop = fx.now;
- },
opacity: function(fx){
jQuery.attr(fx.elem.style, "opacity", fx.now);
},
_default: function(fx){
- fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ if( fx.prop in fx.elem )
+ fx.elem[ fx.prop ] = fx.now;
+ else if( fx.elem.style )
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
}
}
});