2015-07-23 15 views
5

Đây là không trùng lặp của this vì nó cũng sử dụng phương pháp document.ready rõ ràng không hoạt động.Không tải hình ảnh trong các yếu tố bị ẩn

Tôi muốn tránh rằng trình duyệt tải hình ảnh (<img>) được lồng trong các thành phần ẩn <div>.

Vì vậy, tôi đã thử điều này, tuy nhiên javascript được thực hiện quá muộn, trình duyệt đã bắt đầu tải xuống hình ảnh mà nó không nên.

$(document).ready(function() { 
    $('div').not(":visible").each(function() { 
     $(this).find('img').each(function() { 
     $(this).attr("src",""); 
     }); 
    }); 
    }); 

Có giải pháp javascript tốt cho điều này không? Hoặc tôi có phải sử dụng <img srctmp="...."/> và sau đó thay thế srctmp bằng cách src qua javascript cho những hình ảnh KHÔNG được lồng trong một số <div> bị ẩn?

+1

tôi tin rằng thiết lập các thuộc tính 'src' để ' ""' doesnt tác động này. Cố gắng loại bỏ toàn bộ thuộc tính sau khi lưu nó vào 'data-src' hoặc một cái gì đó? – Alex

+1

Không thể _stop_ các nguồn hình ảnh được tải xuống qua JavaScript. Bạn sẽ phải để trống thuộc tính 'src' và sau đó chèn nó sau một thuộc tính khác, nhưng thay vào đó hãy sử dụng' data-srctmp'. – Xufox

+0

Mã bên trong '$ (tài liệu) .ready (function() {...});' sẽ luôn được thực thi sau khi DOM sẵn sàng (nghĩa là sau khi tất cả hình ảnh và nội dung đã được tải). Vì vậy, không sử dụng 'ready'. –

Trả lời

4

Bạn có thể sử dụng một thuộc tính data thay vào đó là src, tải trình duyệt hình ảnh chỉ tạo src, vì vậy bạn có thể bắt đầu với data-src cho mỗi hình ảnh và sau đó thêm các src chỉ đối với những người có thể nhìn thấy.

HTML:

<img data-src="path/to/image.jpg" /> 

JS:

$(document).ready(function() { 
    $('div').is(":visible").each(function() { 
     $(this).find('img').each(function() { 
     $(this).attr("src", $(this).data("src")); 
     }); 
    }); 
    }); 
+0

Điều này có vẻ rất hứa hẹn. Tôi sẽ thử nó ra và chọn nó như là giải pháp nếu nó hoạt động. Cảm ơn vì đã dành thời gian cho tôi. – basZero

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