Bug Tracker

Ticket #2226: 2226.diff

File 2226.diff, 1.4 kB (added by davidserduke, 1 year ago)

new possible patch

  • src/core.js

     
    494494            if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) 
    495495                obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); 
    496496 
    497             var scripts = jQuery( [] ); 
     497            function inDom(elem) { 
     498                while (elem.parentNode && elem.parentNode != document) 
     499                    elem = elem.parentNode; 
     500                return elem.parentNode; 
     501            } 
    498502 
     503            var scripts = jQuery( [] ), 
     504                targetInDom = inDom( obj ); 
     505 
    499506            jQuery.each(elems, function(){ 
    500                 var elem = clone ? 
    501                     jQuery( this ).clone( true )[0] : 
    502                     this; 
     507                var elem = clone ? jQuery( this ).clone( true )[0] : this,  
     508                    // eval scripts only if they are outside the dom being placed in it 
     509                    addScripts = targetInDom && !inDom( elem ); 
    503510 
    504511                // execute all scripts after the elements have been injected 
    505                 if ( jQuery.nodeName( elem, "script" ) ) { 
     512                if ( addScripts && jQuery.nodeName( elem, "script" ) ) { 
    506513                    scripts = scripts.add( elem ); 
    507514                } else { 
    508515                    // Remove any inner scripts for later evaluation 
    509                     if ( elem.nodeType == 1 ) 
     516                    if ( addScripts && elem.nodeType == 1 ) 
    510517                        scripts = scripts.add( jQuery( "script", elem ).remove() ); 
    511518 
    512519                    // Inject the elements into the document