2009-06-07 13 views
12

Sto usando jQuery per aggiungere un po 'di JavaScript quando un articolo è espanso.jQuery - Aggiungi JavaScript a un Div

Ma il codice JavaScript all'interno della funzione jQuery sta causando l'esplosione del resto del codice jQuery.

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

Cosa posso fare per risolvere questo problema?

+0

vi prega di inviare HTML e dire lo scopo della aggiungendo lo script? – TheVillageIdiot

+0

L'HTML non è eccessivamente applicabile qui e lo scopo del javascript è quello di estrarre informazioni da una fonte remota. Ma invece di trasferire queste informazioni per gli oltre 70 articoli sul mio sito a caricamento, preferirei farlo su richiesta. – Tim

+0

ma tu perché vuoi aggiungere javascript a div? puoi recuperare il contenuto del nodo al clic e aggiungerlo al div o al suo interno. – TheVillageIdiot

risposta

17

Per la aggiungendo JavaScript problema uso questo:

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

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

Altrimenti una soluzione migliore sarà quella di legare-up di Li evento click:

$("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); 
      } 
     }); 
}); 

In realtà io non so quale lingua stai usando. Se stai usando ASP.NET per favore leggi questo blog di 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

provare ad aggiungere un \ prima /script e dovrebbe risolvere il problema.

0

può provare come questo

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