$(selector).html()

La fonction .html() permet d'ajouter du contenu HTML et d'exécuter des balises <script>.

Les balises scripts semblent être exécutées après l'ajout du HTML. On pourrait donc penser que html() fait quelques choses qui ressemble à ceci:

function html(str) {
   this.innerHTML = str;
   var scriptElements = this.getElementsByTagName('script');
   Array.forEach(scriptElements, function(el) {
     if (el.src && el.src !== '') {
       // récupérer et exécuter le fichier
     } else {
       eval(el.textContent); // eval ou new Function()
     }
   });
}

Voici un exemple qui prouve que l'exécution est fait par la suite:

var tag = 'a';
$(document.body).html('<script>console.log(document.getElementsByTagName("'+tag+'").length)<\/script>
<'+tag+'>test<\/'+tag+'>
<'+tag+'>test<\/'+tag+'>');
// affiche 2 même si le script est avant les deux tags.