// Make sure that a selection was provided
selector = selector || document;
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this[0] = selector;
+ this.length = 1;
+ return this;
+
// Handle HTML strings
- if ( typeof selector == "string" ) {
+ } else if ( typeof selector == "string" ) {
// Are we dealing with HTML string or an ID?
var match = quickExpr.exec( selector );
},
css: function( key, value ) {
+ // ignore negative width and height values
+ if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
+ value = undefined;
return this.attr( key, value, "curCSS" );
},
if ( this.length ) {
var elem = this[0];
-
+
// We need to handle select boxes special
if ( jQuery.nodeName( elem, "select" ) ) {
var index = elem.selectedIndex,
// Everything else, we just grab the value
} else
- return this[0].value.replace(/\r/g, "");
+ return (this[0].value || "").replace(/\r/g, "");
}
}
// Handle case when target is a string or something (possible in deep copy)
- if ( typeof target != "object" )
+ if ( typeof target != "object" && typeof target != "function" )
target = {};
// extend jQuery itself if only one argument is passed
continue;
// Recurse if we're merging object values
- if ( deep && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType )
+ if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType )
target[ name ] = jQuery.extend( target[ name ], options[ name ] );
// Don't bring in undefined values
},
// Evalulates a script in a global context
- // Evaluates Async. in Safari 2 :-(
globalEval: function( data ) {
data = jQuery.trim( data );
elem.style[ name ] = elem.style[ "old" + name ];
},
- css: function( elem, name ) {
+ css: function( elem, name, force ) {
if ( name == "height" || name == "width" ) {
var old = {}, height, width;
width;
}
- return jQuery.curCSS( elem, name );
+ return jQuery.curCSS( elem, name, force );
},
curCSS: function( elem, name, force ) {
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
throw "type property can't be changed";
- elem.setAttribute( name, value );
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
}
if ( jQuery.browser.msie && /href|src/.test( name ) && !jQuery.isXMLDoc( elem ) )
this[0] == document ?
// Either scroll[Width/Height] or offset[Width/Height], whichever is greater (Mozilla reports scrollWidth the same as offsetWidth)
Math.max( document.body[ "scroll" + name ], document.body[ "offset" + name ] ) :
-
+
// Get or set width or height on the element
size == undefined ?
// Get width or height on the element