Bug Tracker

Ticket #2226: 2226.diff

File 2226.diff, 1.4 KB (added by davidserduke, 15 years 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