X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fcore.js;h=c014f8f8cdf69e1fbb0d319b957a50b83a7086b7;hb=ab96367f121a5cdbe491fafb35cb041055a28a52;hp=9fd0168e62732522ace73ac5d0e276ad68cab031;hpb=0f5c1d15e974fdc44f4f2182e07d4ed6f9a37707;p=jquery.git diff --git a/src/core.js b/src/core.js index 9fd0168..c014f8f 100644 --- a/src/core.js +++ b/src/core.js @@ -10,8 +10,8 @@ */ // Map over jQuery in case of overwrite -if ( typeof jQuery != "undefined" ) - var _jQuery = jQuery; +if ( window.jQuery ) + var _jQuery = window.jQuery; var jQuery = window.jQuery = function( selector, context ) { // If the context is a namespace object, return a new object @@ -21,8 +21,8 @@ var jQuery = window.jQuery = function( selector, context ) { }; // Map over the $ in case of overwrite -if ( typeof $ != "undefined" ) - var _$ = $; +if ( window.$ ) + var _$ = window.$; // Map the jQuery namespace to the '$' one window.$ = jQuery; @@ -407,7 +407,7 @@ jQuery.fn = jQuery.prototype = { jQuery.inArray( this.text, values ) >= 0); }); - if ( !tmp.length ) + if ( !values.length ) this.selectedIndex = -1; } else @@ -461,39 +461,51 @@ jQuery.fn = jQuery.prototype = { if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) obj = this.getElementsByTagName("tbody")[0] || this.appendChild( document.createElement("tbody") ); + var scripts = jQuery( [] ); + jQuery.each(elems, function(){ var elem = clone ? this.cloneNode( true ) : this; - if ( !evalScript( 0, elem ) ) + if ( jQuery.nodeName( elem, "script" ) ) { + + // If scripts are waiting to be executed, wait on this script as well + if ( scripts.length ) + scripts = scripts.add( elem ); + + // If nothing is waiting to be executed, run immediately + else + evalScript( 0, elem ); + + } else { + // Remove any inner scripts for later evaluation + if ( elem.nodeType == 1 ) + scripts = scripts.add( jQuery( "script", elem ).remove() ); + + // Inject the elements into the document callback.call( obj, elem ); + } }); + + scripts.each( evalScript ); }); } }; function evalScript( i, elem ) { - var script = jQuery.nodeName( elem, "script" ); - - if ( script ) { - if ( elem.src ) - jQuery.ajax({ - url: elem.src, - async: false, - dataType: "script" - }); - - else - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); - - if ( elem.parentNode ) - elem.parentNode.removeChild( elem ); + if ( elem.src ) + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); - } else if ( elem.nodeType == 1 ) - jQuery( "script", elem ).each( evalScript ); + else + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); - return script; + if ( elem.parentNode ) + elem.parentNode.removeChild( elem ); } jQuery.extend = jQuery.fn.extend = function() { @@ -522,7 +534,7 @@ jQuery.extend = jQuery.fn.extend = function() { continue; // Recurse if we're merging object values - if ( deep && typeof options[ name ] == "object" && target[ name ] ) + if ( deep && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) jQuery.extend( target[ name ], options[ name ] ); // Don't bring in undefined values @@ -1187,7 +1199,8 @@ jQuery.extend({ readonly: "readOnly", selected: "selected", maxlength: "maxLength", - selectedIndex: "selectedIndex" + selectedIndex: "selectedIndex", + defaultValue: "defaultValue" } }); @@ -1256,7 +1269,8 @@ jQuery.each({ jQuery.event.remove(this); jQuery.removeData(this); }); - this.parentNode.removeChild( this ); + if (this.parentNode) + this.parentNode.removeChild( this ); } }, @@ -1284,7 +1298,7 @@ jQuery.each([ "Height", "Width" ], function(i, name){ jQuery.browser.opera && document.body[ "client" + name ] || // Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths) - jQuery.browser.safari && self[ "inner" + name ] || + jQuery.browser.safari && window[ "inner" + name ] || // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] || document.body[ "client" + name ] :