2011-11-04 22 views
72

Capisco JQuery nel senso fondamentale, ma sono decisamente nuovo ad esso, e sospetto che sia molto semplice.Come creare un nuovo tag img con JQuery, con src e id da un oggetto JavaScript?

Ho la mia immagine src e id in una risposta JSON (convertita in un oggetto), e quindi i valori corretti in responseObject.imgurl e responseObject.imgid, e ora mi piacerebbe creare un'immagine con esso e aggiungilo a un div (chiamiamolo come <div id="imagediv">. Sono un po 'bloccato per creare dinamicamente lo <img src="dynamic" id="dynamic"> - la maggior parte degli esempi che ho visto riguardano la sostituzione di src su un'immagine esistente, ma non ho un'immagine esistente .

risposta

113

In jQuery, un nuovo elemento può essere creato passando una stringa HTML al costruttore, come illustrato di seguito:

var img = $('<img id="dynamic">'); //Equivalent: $(document.createElement('img')) 
img.attr('src', responseObject.imgurl); 
img.appendTo('#imagediv'); 
+0

@ a7omiton Visualizza sorgente tramite contextmenu o tramite l'ispettore? Il menu di scelta rapida (o Ctrl + U) mostra i dati ricevuti dal server senza le modifiche apportate da JavaScript. Usa l'ispettore DOM per vedere l'HTML attivo del documento con le modifiche in tempo reale. –

+0

Oops sorry Ho cancellato il commento: /, appare ora negli strumenti di sviluppo, la pagina è appesa a causa della jquery map 404 issue – a7omiton

+0

Hai ragione, tuttavia, che le immagini non vengono visualizzate nella pagina di origine (ctrl + u) – a7omiton

74
var img = $('<img />', { 
    id: 'Myid', 
    src: 'MySrc.gif', 
    alt: 'MyAlt' 
}); 
img.appendTo($('#YourDiv')); 
13

Risparmi alcuni byte evitando il .attr del tutto passando le proprietà al jQuery constructor:

var img = $('<img />', 
      { id: 'Myid', 
       src: 'MySrc.gif', 
       width: 300 
      }) 
       .appendTo($('#YourDiv')); 
+0

Questo non funziona in Internet Explorer 8 –

+0

Cosa hai provato che non funzionava? ... posso vedere i tuoi codici? – ErickBest

2

Per coloro che hanno bisogno la stessa caratteristica in IE 8, questo è come ho risolto il problema:

var myImage = $('<img/>'); 

       myImage.attr('width', 300); 
       myImage.attr('height', 300); 
       myImage.attr('class', "groupMediaPhoto"); 
       myImage.attr('src', photoUrl); 

Non ho potuto forzare IE8 a utilizzare l'oggetto nel costruttore.

Problemi correlati