JavaScript nesnesinden src ve id ile JQuery ile yeni bir img etiketi nasıl oluşturulur?


87

JQuery'yi temel anlamda anlıyorum ama kesinlikle yeniyim ve bunun çok kolay olduğundan şüpheleniyorum.

Görüntü src ve kimliğimi bir JSON yanıtında (bir nesneye dönüştürülmüş) aldım ve bu nedenle responseObject.imgurl ve responseObject.imgid içindeki doğru değerleri aldım ve şimdi bununla bir görüntü oluşturup eklemek istiyorum a div (hadi <div id="imagediv">diyelim. Dinamik olarak oluşturmaya biraz takılı <img src="dynamic" id="dynamic">kaldım - gördüğüm örneklerin çoğu src'yi mevcut bir resim üzerinde değiştirmeyi içeriyor, ancak mevcut bir resmim yok.

Yanıtlar:


138

JQuery'de, aşağıda gösterildiği gibi yapıcıya bir HTML dizesi iletilerek yeni bir öğe oluşturulabilir:

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

@ a7omiton Kaynağı bağlam menüsü veya denetçi aracılığıyla görüntülensin mi? Bağlam menüsü (veya Ctrl + U), JavaScript tarafından yapılan değişiklikler olmadan sunucudan alınan verileri gösterir. Canlı değişikliklerle belgenin etkin HTML'sini görmek için DOM denetçisini kullanın.
Rob W

Maalesef yorumu sildim: /, şu anda geliştirici araçlarında görünüyor, sayfa jquery map 404 sorunu nedeniyle asılıydı
a7omiton

Ancak haklısınız, görüntülerin kaynak sayfada (ctrl + u)
görünmemesi

@ a7omiton Sağ alt köşedeki dişli simgesine tıklayarak ve "Kaynak haritalarını etkinleştir" seçeneğini devre dışı bırakarak jquery.min.map ile ilgili 404 uyarıları devre dışı bırakabilirsiniz.
Rob W

Evet, paul_irish'in ( stackoverflow.com/questions/18365315/… ) yazdığı çözüme bakıyordum . Bunun için teşekkürler :)
a7omiton 01

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

17

.attrÖzellikleri jQuery yapıcısına ileterek tamamen kaçınarak bazı baytlardan tasarruf edersiniz :

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

2

IE 8'de aynı özelliğe ihtiyaç duyanlar için sorunu şu şekilde çözdüm:

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

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

IE8'i yapıcıda nesne kullanmaya zorlayamadım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.