X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Ffx.js;h=40bbc61edace1fb541bff244c9b8f0af19c8c200;hb=b1e161466cb7f68bc7447ffd580395764715d9ca;hp=2d6433dd38549b35ee9bd5742affba41a945546b;hpb=654d946ead6bc1f995c04af2abc02da30cfe4f74;p=jquery.git diff --git a/src/fx.js b/src/fx.js index 2d6433d..40bbc61 100644 --- a/src/fx.js +++ b/src/fx.js @@ -1,11 +1,25 @@ -var elemdisplay = {}; +var elemdisplay = {}, + fxAttrs = [ + // height animations + [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ], + // width animations + [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ], + // opacity animations + [ "opacity" ] + ]; + +function genFx( type, num ){ + var obj = {}; + jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){ + obj[ this ] = type; + }); + return obj; +} jQuery.fn.extend({ show: function(speed,callback){ if ( speed ) { - return this.animate({ - height: "show", width: "show", opacity: "show" - }, speed, callback); + return this.animate( genFx("show", 3), speed, callback); } else { for ( var i = 0, l = this.length; i < l; i++ ){ var old = jQuery.data(this[i], "olddisplay"); @@ -18,7 +32,7 @@ jQuery.fn.extend({ if ( elemdisplay[ tagName ] ) { display = elemdisplay[ tagName ]; } else { - var elem = jQuery("<" + this[i].tagName + " />").appendTo("body"); + var elem = jQuery("<" + tagName + " />").appendTo("body"); display = elem.css("display"); if ( display === "none" ) @@ -26,7 +40,7 @@ jQuery.fn.extend({ elem.remove(); - elemdisplay[ this[i].tagName ] = display; + elemdisplay[ tagName ] = display; } this[i].style.display = jQuery.data(this[i], "olddisplay", display); @@ -39,9 +53,7 @@ jQuery.fn.extend({ hide: function(speed,callback){ if ( speed ) { - return this.animate({ - height: "hide", width: "hide", opacity: "hide" - }, speed, callback); + return this.animate( genFx("hide", 3), speed, callback); } else { for ( var i = 0, l = this.length; i < l; i++ ){ var old = jQuery.data(this[i], "olddisplay"); @@ -66,9 +78,7 @@ jQuery.fn.extend({ var state = bool ? fn : jQuery(this).is(":hidden"); jQuery(this)[ state ? "show" : "hide" ](); }) : - this.animate({ - height: "toggle", width: "toggle", opacity: "toggle" - }, fn, fn2); + this.animate(genFx("toggle", 3), fn, fn2); }, fadeTo: function(speed,to,callback){ @@ -137,27 +147,6 @@ jQuery.fn.extend({ }); }, - queue: function(type, fn){ - if ( jQuery.isFunction(type) || jQuery.isArray(type) ) { - fn = type; - type = "fx"; - } - - if ( !type || (typeof type === "string" && !fn) ) - return queue( this[0], type ); - - return this.each(function(){ - if ( jQuery.isArray(fn) ) - queue(this, type, fn); - else { - queue(this, type).push( fn ); - - if ( queue(this, type).length == 1 ) - fn.call(this); - } - }); - }, - stop: function(clearQueue, gotoEnd){ var timers = jQuery.timers; @@ -186,9 +175,9 @@ jQuery.fn.extend({ // Generate shortcuts for custom animations jQuery.each({ - slideDown: { height:"show" }, - slideUp: { height: "hide" }, - slideToggle: { height: "toggle" }, + slideDown: genFx("show", 1), + slideUp: genFx("hide", 1), + slideToggle: genFx("toggle", 1), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" } }, function( name, props ){ @@ -197,33 +186,6 @@ jQuery.each({ }; }); -var queue = function( elem, type, array ) { - if ( elem ){ - - type = type || "fx"; - - var q = jQuery.data( elem, type + "queue" ); - - if ( !q || array ) - q = jQuery.data( elem, type + "queue", jQuery.makeArray(array) ); - - } - return q; -}; - -jQuery.fn.dequeue = function(type){ - type = type || "fx"; - - return this.each(function(){ - var q = queue(this, type); - - q.shift(); - - if ( q.length ) - q[0].call( this ); - }); -}; - jQuery.extend({ speed: function(speed, easing, fn) { @@ -336,12 +298,9 @@ jQuery.fx.prototype = { this.options.show = true; // Begin the animation - this.custom(0, this.cur()); - // Make sure that we start at a small width/height to avoid any // flash of content - if ( this.prop == "width" || this.prop == "height" ) - this.elem.style[this.prop] = "1px"; + this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur()); // Start by showing the element jQuery(this.elem).show(); @@ -386,7 +345,7 @@ jQuery.fx.prototype = { // Hide the element if the "hide" operation was done if ( this.options.hide ) - this.elem.style.display = "none"; + jQuery(this.elem).hide(); // Reset the properties, if the item has been hidden or shown if ( this.options.hide || this.options.show ) @@ -430,10 +389,10 @@ jQuery.extend( jQuery.fx, { }, _default: function(fx){ - if( fx.prop in fx.elem ) - fx.elem[ fx.prop ] = fx.now; - else if( fx.elem.style ) + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; } } });