2009-06-07 8 views
12

J'utilise jQuery pour ajouter un peu JavaScript lorsqu'un élément est agrandi. Mais le code JavaScript à l'intérieur de la fonction jQuery provoque l'explosion du reste du code jQuery.jQuery - Annexer JavaScript à une Div

$(this).parent('li').find('.moreInfo').append('<script>alert("hello");</script>'); 

Que puis-je faire pour résoudre ce problème?

+0

vous s'il vous plaît poster html et dire le but de annexant le script? – TheVillageIdiot

+0

Le code HTML ne s'applique pas ici et le but du javascript est d'extraire des informations d'une source distante. Mais au lieu de tirer cette information pour les plus de 70 articles sur mon site au chargement, je préférerais le tirer à la demande. – Tim

+0

mais pourquoi voulez-vous ajouter javascript à div? vous pouvez aller chercher le contenu du noeud en cliquant et l'ajouter à la div ou à celle-ci. – TheVillageIdiot

Répondre

17

Pour le problème JavaScript annexant utiliser ceci:

var str="<script>alert('hello');"; 
str+="<"; 
str+="/script>"; 

$(this).parent('li').find('.moreInfo').append(str); 

Sinon une meilleure option sera de fil-up événement click de li:

$("ul#myList li").click(function(){ 
     $.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: "url to your content page", 
      data: "{}",//any data that you want to send to your page/service 
      dataType: "json", 
      success: function(msg) { 
       $(this).find('.moreInfo').append(msg); 
      } 
     }); 
}); 

En fait, je ne sais pas quelle langue Utilises-tu. Si vous utilisez ASP.NET s'il vous plaît lire ce blog par Dave.

2
$(document).ready(function() { 
     $("ul").each(function() { 
      var _list = this; 
      $(_list).find("li").click(function() { 
       var _listItem = this; 
       $(this).animate({ height: 20 }, 300); 
       $(this).append("<script type='text/javascript'>" + "$('.resultsParag').text('I am injected via JS and will not mess up the other JS you have written cause I am a good boy');" + "</" + "script>"); 
      }); 
     }); 
    }); 
2

Essayez d'ajouter un \ avant /script et il devrait résoudre votre problème.

0

peut essayer comme ça

$(this).parent('li').find('.moreInfo').append('<script>alert("hello");</' + 'script>');