2011-11-04 59 views
72

Entiendo JQuery en el sentido básico, pero definitivamente soy nuevo y sospecho que es muy fácil.Cómo crear una nueva etiqueta img con JQuery, con src y id de un objeto JavaScript?

Tengo mi imagen src e id en una respuesta JSON (convertida a un objeto), y por lo tanto los valores correctos en responseObject.imgurl y responseObject.imgid, y ahora me gustaría crear una imagen con ella y añádalo a un div (vamos a llamarlo <div id="imagediv">. Estoy un poco atascado en la construcción dinámica del <img src="dynamic" id="dynamic"> - la mayoría de los ejemplos que he visto implican reemplazar el src en una imagen existente, pero no tengo una imagen existente .

Respuesta

113

En jQuery, un nuevo elemento se puede crear al pasar una cadena HTML para el constructor, como se muestra a continuación:

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

@ a7omiton ¿Ver fuente a través de contextmenu o mediante el inspector? El menú contextual (o Ctrl + U) muestra los datos recibidos del servidor sin los cambios realizados por JavaScript. Use el inspector DOM para ver el HTML activo del documento con cambios en vivo. –

+0

Vaya, lo siento, eliminé el comentario: /, aparece en las herramientas de desarrollo ahora, la página se colgó debido a la cuestión 404 del mapa de jquery – a7omiton

+0

Tiene razón, sin embargo, en que las imágenes no se muestran en la página de origen (Ctrl) + u) – a7omiton

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

a ahorrar algo de bytes por evitar la .attr por completo al pasar las propiedades a la jQuery constructor:

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

Esto no funciona en Internet Explorer 8 –

+0

¿Qué probaron que no funcionó? ... ¿Puedo ver sus códigos? – ErickBest

2

Para aquellos que necesitan la misma función en IE 8, así es como he resuelto el problema:

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

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

No pude obligar a IE8 a usar el objeto en el constructor.

Cuestiones relacionadas