jQuery: Nach Ajax-Response script-Tags in bestimmten DIVs ausführen

Beim Laden über die schöne jQuery.ajax()-Funktion wollten wir nicht nur die Inhalte eines bestimmten DIVs austauschen, sondern auch alle JavaScripte im neuen DIV ausühren. Leider werden alle Script-Tags automatisch „bereinigt“ bevor man sie in das DOM einfügen kann. Nach einigen Versuchen kamen wir dann auf folgende Lösung.

$.ajax({
   url: "http://....",
   success: function ( data ) {
     
      // Dieses DIV soll ersetzt werden - und alle script-Tags innerhalb des DIVs ausgeführt werden
      var target=".testdiv";	

      // Erst mal den Inhalt des DIVs mit dem neuen Inhalt ersetzen
      $(target).html( $(target, data).contents() );

      // Jetzt über ein paar Umwege die gewünschten Script-Tags innerhalb des DIVs finden und ausführen
      var div = document.createElement('div');
      div.innerHTML = data;
      var ref = $($(div).find(target).html());
      ref.filter('script').each(function () {
         $.globalEval(this.text || this.textContent || this.innerHTML || '');
      });
   }
});

Für Suchmaschinen: „jQuery Ajax Script-Tag“ „execute script tags jquery ajax response“ „script tags ajax response“ „script in div ajax response“ „einzelne script-Tags ausführen jquery ajax“ „jquery script clean“ „ajax javascript script ausführen“