X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fcore.js;h=d396ee95a6844161fe6ad507437c7a8afdf6a0fd;hb=e287007f6a129901a07b6a342d0c7bfa36a7a868;hp=9fd0168e62732522ace73ac5d0e276ad68cab031;hpb=0f5c1d15e974fdc44f4f2182e07d4ed6f9a37707;p=jquery.git diff --git a/src/core.js b/src/core.js index 9fd0168..d396ee9 100644 --- a/src/core.js +++ b/src/core.js @@ -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() {