Skip to content
Permalink
Browse files

Fix #10754. Have jQuery.swap() return the value of its callback.

  • Loading branch information...
mikesherov authored and dmethvin committed Dec 6, 2011
1 parent 0fcfac7 commit 2c1d2b1a4dc74c6487d9f5dd0ecafd34358163a1
Showing with 11 additions and 14 deletions.
  1. +11 −14 src/css.js
@@ -140,20 +140,23 @@ jQuery.extend({

// A method for quickly swapping in/out CSS properties to get correct calculations
swap: function( elem, options, callback ) {
var old = {};
var old = {},
ret, name;

// Remember the old values, and insert the new ones
for ( var name in options ) {
for ( name in options ) {
old[ name ] = elem.style[ name ];
elem.style[ name ] = options[ name ];
}

callback.call( elem );
ret = callback.call( elem );

// Revert the old values
for ( name in options ) {
elem.style[ name ] = old[ name ];
}

return ret;
}
});

@@ -163,18 +166,14 @@ jQuery.curCSS = jQuery.css;
jQuery.each(["height", "width"], function( i, name ) {
jQuery.cssHooks[ name ] = {
get: function( elem, computed, extra ) {
var val;

if ( computed ) {
if ( elem.offsetWidth !== 0 ) {
return getWH( elem, name, extra );
} else {
jQuery.swap( elem, cssShow, function() {
val = getWH( elem, name, extra );
return jQuery.swap( elem, cssShow, function() {
return getWH( elem, name, extra );
});
}

return val;
}
},

@@ -243,15 +242,13 @@ jQuery(function() {
get: function( elem, computed ) {
// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
// Work around by temporarily setting element display to inline-block
var ret;
jQuery.swap( elem, { "display": "inline-block" }, function() {
return jQuery.swap( elem, { "display": "inline-block" }, function() {
if ( computed ) {
ret = curCSS( elem, "margin-right", "marginRight" );
return curCSS( elem, "margin-right", "marginRight" );
} else {
ret = elem.style.marginRight;
return elem.style.marginRight;
}
});
return ret;
}
};
}

0 comments on commit 2c1d2b1

Please sign in to comment.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.