Wie erstelle ich mit JQuery ein neues img-Tag mit src und id aus einem JavaScript-Objekt?


86

Ich verstehe JQuery im grundlegenden Sinne, bin aber definitiv neu darin und vermute, dass dies sehr einfach ist.

Ich habe mein Bild src und id in einer JSON-Antwort (in ein Objekt konvertiert) und daher die richtigen Werte in responseObject.imgurl und responseObject.imgid. Jetzt möchte ich ein Bild damit erstellen und anhängen a div (nennen wir es so <div id="imagediv">. Ich bin ein bisschen festgefahren, das dynamisch zu erstellen <img src="dynamic" id="dynamic">- die meisten Beispiele, die ich gesehen habe, beinhalten das Ersetzen des src für ein vorhandenes Image, aber ich habe kein vorhandenes Image.

Antworten:


137

In jQuery kann ein neues Element erstellt werden, indem eine HTML-Zeichenfolge an den Konstruktor übergeben wird, wie unten gezeigt:

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

@ a7omiton Quelle über Kontextmenü oder über den Inspektor anzeigen? Das Kontextmenü (oder Strg + U) zeigt die vom Server empfangenen Daten ohne die von JavaScript vorgenommenen Änderungen an. Verwenden Sie den DOM-Inspektor, um den aktiven HTML-Code des Dokuments mit Live-Änderungen anzuzeigen.
— Rob W

Hoppla, tut mir leid, ich habe den Kommentar gelöscht: /, er wird jetzt in den Entwicklertools angezeigt. Die Seite hing aufgrund des Problems mit der jquery map 404
— a7omiton

Sie haben jedoch Recht, dass die Bilder nicht auf der Quellseite angezeigt werden (Strg + u)
— a7omiton

@ a7omiton Sie können die 404-Warnungen zu jquery.min.map deaktivieren, indem Sie auf das Zahnradsymbol in der unteren rechten Ecke klicken und die Option "Quellkarten aktivieren" deaktivieren.
— Rob W

Ja, ich habe mir gerade die Lösung von paul_irish ( stackoverflow.com/questions/18365315/… ) angesehen. Danke dafür :)
— a7omiton

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

17

Sie sparen einige Bytes, indem Sie das .attrGanze vermeiden, indem Sie die Eigenschaften an den jQuery-Konstruktor übergeben :

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

2

Für diejenigen, die dieselbe Funktion in IE 8 benötigen, habe ich das Problem folgendermaßen gelöst:

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

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

Ich konnte IE8 nicht zwingen, Objekt im Konstruktor zu verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.