jquery selector: closes #3023. The attribute filter accepts ':'.
[jquery.git] / src / fx.js
index ee8ab81..9dcedbf 100644 (file)
--- a/src/fx.js
+++ b/src/fx.js
@@ -45,26 +45,6 @@ jQuery.fn.extend({
                                });
        },
 
-       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);
        },
@@ -73,17 +53,16 @@ jQuery.fn.extend({
                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 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");
 
@@ -179,6 +158,19 @@ jQuery.fn.extend({
 
 });
 
+// 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 ){
 
@@ -218,7 +210,7 @@ jQuery.extend({
 
                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;
@@ -265,13 +257,13 @@ jQuery.fx.prototype = {
                (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));
@@ -405,23 +397,19 @@ jQuery.extend( jQuery.fx, {
                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;
                }
        }
 });