Vấn đề là bạn không thể sử dụng event delegation
cho sự kiện error
trên đối tượng tài liệu, bởi vì không giống như các sự kiện khác (chẳng hạn như onclick
), sự kiện onerror
không được sủi bọt đối tượng tài liệu.
Sử dụng sự kiện bình thường ràng buộc thay vì:
$('img').on("error", function() {
this.src = ResolveUrl("~/images/tree-item.png");
});
- Tái bút: - Điều này sẽ chỉ hoạt động trên những hình ảnh đã có trên DOM khi lệnh này được thực thi.
Để xử lý hình ảnh tự động thêm vào như là tốt, bạn cần phải đính kèm sự kiện này để mỗi hình ảnh bạn thêm vào DOM. Dưới đây là một ví dụ:
function handleError() {
this.src = ResolveUrl("~/images/tree-item.png");
}
// Bind the event to the existing images on the DOM when the document is ready
$(document).ready(function() {
$('img').on("error", handleError);
}
// An example for a function that adds images dynamically
function addImage(imgSource, destination) {
var newImg = $("img").attr("src", imgSource)
.on("error", handleError);
$(destination).append(newImg);
}
mã ResolveUrl() ở đâu? – Unknown
Đó là một chức năng phía khách hàng. Ngay cả khi tôi xóa nó, cảnh báo sẽ không kích hoạt – user960567
Tôi không chắc chắn bạn có thể làm việc thực hiện ủy quyền sự kiện trên 'tài liệu' bằng cách sử dụng sự kiện' lỗi'. Sự kiện này sẽ không bong bóng đối tượng tài liệu nếu tôi không nhầm. – Itay