},
// A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
+ swap: function( elem, options, callback, args ) {
var ret, name,
old = {};
elem.style[ name ] = options[ name ];
}
- ret = callback.call( elem );
+ ret = callback.apply( elem, args || [] );
// Revert the old values
for ( name in options ) {
if ( computed ) {
// certain elements can have dimension info if we invisibly show them
// however, it must have a current display style that would benefit from this
- if ( elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ) {
- return jQuery.swap( elem, cssShow, function() {
+ return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
+ jQuery.swap( elem, cssShow, function() {
return getWidthOrHeight( elem, name, extra );
- });
- } else {
- return getWidthOrHeight( elem, name, extra );
- }
+ }) :
+ getWidthOrHeight( elem, name, extra );
}
},
if ( !jQuery.support.reliableMarginRight ) {
jQuery.cssHooks.marginRight = {
get: function( elem, computed ) {
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- // Work around by temporarily setting element display to inline-block
- return jQuery.swap( elem, { "display": "inline-block" }, function() {
- if ( computed ) {
- return curCSS( elem, "marginRight" );
- }
- });
+ if ( computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ return jQuery.swap( elem, { "display": "inline-block" },
+ curCSS, [ elem, "marginRight" ] );
+ }
}
};
}
jQuery.each( [ "top", "left" ], function( i, prop ) {
jQuery.cssHooks[ prop ] = {
get: function( elem, computed ) {
- var ret;
if ( computed ) {
- ret = curCSS( elem, prop );
+ computed = curCSS( elem, prop );
// if curCSS returns percentage, fallback to offset
- return rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret;
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
}
}
};
jQuery.cssHooks[ prefix + suffix ] = {
expand: function( value ) {
var i = 0,
+ expanded = {},
// assumes a single number if not a string
- parts = typeof value === "string" ? value.split(" ") : [ value ],
- expanded = {};
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
for ( ; i < 4; i++ ) {
expanded[ prefix + cssExpand[ i ] + suffix ] =
// Flatten any nested arrays
args = core_concat.apply( [], args );
- var fragment, first, scripts, hasScripts, iNoClone, node, doc,
+ var fragment, first, scripts, hasScripts, node, doc,
i = 0,
l = this.length,
+ iNoClone = l - 1,
value = args[0],
isFunction = jQuery.isFunction( value );
// Use the original fragment for the last item instead of the first because it can end up
// being emptied incorrectly in certain situations (#8070).
- for ( iNoClone = l - 1; i < l; i++ ) {
+ for ( ; i < l; i++ ) {
node = fragment;
if ( i !== iNoClone ) {
insert = jQuery( selector ),
last = insert.length - 1;
- for ( ; i <= last; i++ ) {
- elems = i === last ? this : this.clone(true);
- jQuery( insert[i] )[ original ]( elems );
- core_push.apply( ret, elems.get() );
- }
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone(true);
+ jQuery( insert[i] )[ original ]( elems );
+
+ // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
+ core_push.apply( ret, elems.get() );
+ }
- return this.pushStack( ret );
+ return this.pushStack( ret );
};
});
},
clean: function( elems, context, fragment, scripts, selection ) {
- var elem, j, tmp, tag, wrap, tbody,
+ var elem, i, j, tmp, tag, wrap, tbody,
ret = [],
- i = 0,
safe = context === document && safeFragment;
// Ensure that context is a document
// Append to fragment
// #4087 - If origin and destination elements are the same, and this is
// that element, do not append to fragment
- if ( !( selection && jQuery.inArray( elem, selection ) !== -1 ) ) {
+ if ( !selection || jQuery.inArray( elem, selection ) === -1 ) {
fragment.appendChild( elem );
}
tmp = getAll( elem, "script" );