// Copy the events from the original to the clone
if ( events === true )
this.find("*").andSelf().each(function(i){
+ if (this.nodeType == 3)
+ return;
var events = jQuery.data( this, "events" );
for ( var type in events )
else
selector = jQuery.multiFilter( selector, this );
+ var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
return this.filter(function() {
- return jQuery.inArray( this, selector ) < 0;
+ return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
});
},
}
+ return undefined;
}
return this.each(function(){
jQuery.each(elems, function(){
var elem = clone ?
- this.cloneNode( true ) :
+ jQuery( this ).clone( true )[0] :
this;
// execute all scripts after the elements have been injected
// A method for quickly swapping in/out CSS properties to get correct calculations
swap: function( elem, options, callback ) {
+ var old = {};
// Remember the old values, and insert the new ones
for ( var name in options ) {
- elem.style[ "old" + name ] = elem.style[ name ];
+ old[ name ] = elem.style[ name ];
elem.style[ name ] = options[ name ];
}
// Revert the old values
for ( var name in options )
- elem.style[ name ] = elem.style[ "old" + name ];
+ elem.style[ name ] = old[ name ];
},
css: function( elem, name, force ) {
if ( name == "width" || name == "height" ) {
- var width, height, props = { position: "absolute", visibility: "hidden", display:"block" };
+ var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
function getWH() {
- width = elem.clientWidth;
- height = elem.clientHeight;
+ val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
+ var padding = 0, border = 0;
+ jQuery.each( which, function() {
+ padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+ border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+ });
+ val -= Math.round(padding + border);
}
if ( jQuery(elem).is(":visible") )
getWH();
else
jQuery.swap( elem, props, getWH );
-
- return name == "width" ? width : height;
+
+ return Math.max(0, val);
}
return jQuery.curCSS( elem, name, force );
"1" :
ret;
}
+ // Opera sometimes will give the wrong display answer, this fixes it, see #2037
+ if ( jQuery.browser.opera && name == "display" ) {
+ var save = elem.style.display;
+ elem.style.display = "block";
+ elem.style.display = save;
+ }
// Make sure we're using the right name for getting the float value
if ( name.match( /float/i ) )