X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fcore.js;h=0bf353074edc2f6c262ce85fc8042474591cef00;hb=aca1cc367782f8d038a13794a46aec6fd825eb45;hp=a42e8f6577da105c9650f42b2c283b35c3d04d0c;hpb=5e99807271ebe194b7f0278a929b053b4dd46c81;p=jquery.git diff --git a/src/core.js b/src/core.js index a42e8f6..0bf3530 100644 --- a/src/core.js +++ b/src/core.js @@ -36,8 +36,14 @@ jQuery.fn = jQuery.prototype = { // 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 ); @@ -188,6 +194,9 @@ jQuery.fn = jQuery.prototype = { }, 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" ); }, @@ -354,7 +363,7 @@ jQuery.fn = jQuery.prototype = { if ( this.length ) { var elem = this[0]; - + // We need to handle select boxes special if ( jQuery.nodeName( elem, "select" ) ) { var index = elem.selectedIndex, @@ -387,7 +396,7 @@ jQuery.fn = jQuery.prototype = { // Everything else, we just grab the value } else - return this[0].value.replace(/\r/g, ""); + return (this[0].value || "").replace(/\r/g, ""); } @@ -540,7 +549,7 @@ jQuery.extend = jQuery.fn.extend = function() { 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 @@ -582,7 +591,6 @@ jQuery.extend({ }, // Evalulates a script in a global context - // Evaluates Async. in Safari 2 :-( globalEval: function( data ) { data = jQuery.trim( data ); @@ -749,7 +757,7 @@ jQuery.extend({ 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; @@ -799,7 +807,7 @@ jQuery.extend({ width; } - return jQuery.curCSS( elem, name ); + return jQuery.curCSS( elem, name, force ); }, curCSS: function( elem, name, force ) { @@ -1033,7 +1041,8 @@ jQuery.extend({ 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 ) ) @@ -1315,7 +1324,7 @@ jQuery.each([ "Height", "Width" ], function(i, name){ 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