Make sure that jQuery works even when the individual modules are loaded separately...
[jquery.git] / src / css.js
index e52e453..ae6853e 100644 (file)
@@ -1,3 +1,5 @@
+(function( jQuery ) {
+
 // exclude the following css properties to add px
 var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
        ralpha = /alpha\([^)]*\)/,
@@ -21,7 +23,7 @@ var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
        };
 
 jQuery.fn.css = function( name, value ) {
-       return access( this, name, value, true, function( elem, name, value ) {
+       return jQuery.access( this, name, value, true, function( elem, name, value ) {
                if ( value === undefined ) {
                        return jQuery.curCSS( elem, name );
                }
@@ -49,20 +51,20 @@ jQuery.extend({
                var style = elem.style || elem, set = value !== undefined;
 
                // IE uses filters for opacity
-               if ( !jQuery.support.opacity && name === "opacity" ) {
+               if ( !jQuery.support.opacity && name === "opacity" && style.filter ) {
                        if ( set ) {
                                // IE has trouble with opacity if it does not have layout
                                // Force it by setting the zoom level
                                style.zoom = 1;
 
                                // Set the alpha filter to set the opacity
-                               var opacity = parseInt( value, 10 ) + '' === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
-                               var filter = style.filter || jQuery.curCSS( elem, 'filter' ) || "";
+                               var opacity = parseInt( value, 10 ) + "" === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
+                               var filter = style.filter || jQuery.curCSS( elem, "filter" ) || "";
                                style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;
                        }
 
                        return style.filter && style.filter.indexOf("opacity=") >= 0 ?
-                               (parseFloat( ropacity.exec(style.filter)[1] ) / 100) + '':
+                               (parseFloat( ropacity.exec(style.filter)[1] ) / 100) + "":
                                "";
                }
 
@@ -82,32 +84,13 @@ jQuery.extend({
 
        css: function( elem, name, force, extra ) {
                if ( name === "width" || name === "height" ) {
-                       var val, props = cssShow, which = name === "width" ? cssWidth : cssHeight;
-
-                       function getWH() {
-                               val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
-
-                               if ( extra === "border" ) {
-                                       return;
-                               }
-
-                               jQuery.each( which, function() {
-                                       if ( !extra ) {
-                                               val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
-                                       }
-
-                                       if ( extra === "margin" ) {
-                                               val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
-                                       } else {
-                                               val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
-                                       }
-                               });
-                       }
-
                        if ( elem.offsetWidth !== 0 ) {
-                               getWH();
+                               val = getWH( elem, name, extra );
+
                        } else {
-                               jQuery.swap( elem, props, getWH );
+                               jQuery.swap( elem, cssShow, function() {
+                                       val = getWH( elem, name, extra );
+                               });
                        }
 
                        return Math.max(0, Math.round(val));
@@ -205,12 +188,36 @@ jQuery.extend({
                callback.call( elem );
 
                // Revert the old values
-               for ( var name in options ) {
+               for ( name in options ) {
                        elem.style[ name ] = old[ name ];
                }
        }
 });
 
+function getWH( elem, name, extra ) {
+       var which = name === "width" ? cssWidth : cssHeight,
+               val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+
+       if ( extra === "border" ) {
+               return val;
+       }
+
+       jQuery.each( which, function() {
+               if ( !extra ) {
+                       val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+               }
+
+               if ( extra === "margin" ) {
+                       val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
+
+               } else {
+                       val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+               }
+       });
+
+       return val;
+}
+
 if ( jQuery.expr && jQuery.expr.filters ) {
        jQuery.expr.filters.hidden = function( elem ) {
                var width = elem.offsetWidth, height = elem.offsetHeight,
@@ -227,3 +234,5 @@ if ( jQuery.expr && jQuery.expr.filters ) {
                return !jQuery.expr.filters.hidden( elem );
        };
 }
+
+})( jQuery );