2011-11-04 55 views
72

Tôi hiểu JQuery theo nghĩa cơ bản nhưng chắc chắn mới với nó, và nghi ngờ điều này là rất dễ dàng.Làm thế nào để tạo một thẻ img mới với JQuery, với src và id từ một đối tượng JavaScript?

Tôi đã có hình ảnh src và id của tôi trong một phản hồi JSON (được chuyển đổi thành một đối tượng), và do đó các giá trị chính xác trong responseObject.imgurl và responseObject.imgid, và bây giờ tôi muốn tạo một hình ảnh với nó và thêm nó vào một div (cho phép gọi nó là <div id="imagediv">) Tôi hơi bị kẹt khi tự động xây dựng <img src="dynamic" id="dynamic"> - hầu hết các ví dụ tôi đã thấy liên quan đến việc thay thế src trên một hình ảnh hiện có, nhưng tôi không có một hình ảnh hiện có .

Trả lời

113

Trong jQuery, một yếu tố mới có thể được tạo ra bằng cách thông qua một chuỗi HTML để các nhà xây dựng, như hình dưới đây:

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

@ a7omiton Xem nguồn qua contextmenu hoặc qua thanh tra? Trình đơn ngữ cảnh (hoặc Ctrl + U) hiển thị dữ liệu nhận được từ máy chủ mà không có các thay đổi được thực hiện bởi JavaScript. Sử dụng trình kiểm tra DOM để xem HTML hoạt động của tài liệu với các thay đổi trực tiếp. –

+0

Rất tiếc, tôi đã xóa nhận xét: /, hiện tại nó xuất hiện trong các công cụ dành cho nhà phát triển, trang đã bị treo vì vấn đề về bản đồ jquery 404 – a7omiton

+0

Tuy nhiên, bạn sẽ không hiển thị hình ảnh trên trang nguồn (ctrl) + u) – a7omiton

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

Bạn tiết kiệm một số byte bằng cách tránh các .attr hoàn toàn bằng cách thông qua các thuộc tính cho jQuery constructor:

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

Tính năng này không hoạt động trong Internet Explorer 8 –

+0

Bạn đã thử làm gì mà không hoạt động? ... Tôi có thể xem mã của bạn không? – ErickBest

2

Với những ai cần tính năng tương tự trong IE 8, đây là cách tôi giải quyết vấn đề:

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

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

Tôi không thể buộc IE8 sử dụng đối tượng trong hàm tạo.

Các vấn đề liên quan