Prevented non-script <script> blocks from executing, fixing #3733.
[jquery.git] / src / fx.js
index ae472ef..40bbc61 100644 (file)
--- 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");
@@ -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){
@@ -165,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 ){
@@ -288,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();
@@ -338,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 )
@@ -382,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;
                }
        }
 });