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?


87

Tôi hiểu JQuery theo nghĩa cơ bản nhưng chắc chắn là chưa quen với nó và nghi ngờ điều này rất dễ dàng.

Tôi đã có src và id hình ảnh của mình 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à nối nó vào một div (hãy gọi nó <div id="imagediv">. Tôi hơi mắc kẹt trong việc xây dựng độ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ó.

Câu trả lời:


138

Trong jQuery, một phần tử mới có thể được tạo bằng cách chuyển một chuỗi HTML tới hàm tạo, như được hiển thị bên dưới:

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

@ a7omiton Xem nguồn qua contextmenu hay qua thanh tra? Menu 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 do JavaScript thực hiện. Sử dụng trình kiểm tra DOM để xem HTML đang hoạt động của tài liệu với các thay đổi trực tiếp.
Rob W

Rất tiếc xin lỗi tôi đã xóa nhận xét: /, nó hiển thị trong các công cụ dev bây giờ, trang bị treo vì bản đồ jquery 404 vấn đề
a7omiton

Bạn là đúng tuy nhiên những hình ảnh không hiển thị trên trang nguồn (ctrl + u)
a7omiton

@ a7omiton Bạn có thể tắt cảnh báo 404 về jquery.min.map bằng cách nhấp vào biểu tượng bánh răng ở góc dưới bên phải và tắt tùy chọn "Bật bản đồ nguồn".
Rob W

Có, tôi chỉ đang xem giải pháp của paul_irish ( stackoverflow.com/questions/18365315/… ). Cám ơn :) rằng
a7omiton

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

17

Bạn tiết kiệm một số byte bằng cách tránh .attrhoàn toàn bằng cách chuyển các thuộc tính cho hàm tạo jQuery :

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

2

Đối với những người 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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.