2015-07-23 8 views
5

To jest nie jest duplikatem z this, ponieważ używa również podejścia document.ready, które oczywiście nie działa.Nie ładuj obrazów w ukrytych elementach

Chcę uniknąć tego, że przeglądarka ładuje obrazy (<img>) zagnieżdżone w ukrytych elementach <div>.

Próbowałem tego, jednak javascript jest wykonywany zbyt późno, przeglądarka zaczyna już pobierać obrazy, które nie powinny.

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

Czy istnieje dobre rozwiązanie javascript dla tego? Czy muszę użyć <img srctmp="...."/>, a następnie zastąpić srctmp przez src przez javascript dla obrazów, które NIE są zagnieżdżone w ukrytym <div>?

+1

wierzę ustawienie 'src' atrybut' "" 'wpływ nie robi tego. Spróbuj usunąć cały atrybut po zapisaniu go do 'data-src' lub coś podobnego? – Alex

+1

Nie można pobrać źródeł obrazu _stop_ za pomocą JavaScript. Będziesz musiał opróżnić atrybut 'src', a następnie wstawić go później z innym atrybutem, ale zamiast tego użyj' data-srctmp'. – Xufox

+0

Kod wewnątrz '$ (document) .ready (function() {...});' będzie zawsze wykonywany po zakończeniu DOM (co oznacza, że ​​po załadowaniu wszystkich obrazów i zawartości). Więc nie używaj 'ready'. –

Odpowiedz

4

Można użyć atrybutu data zamiast src, ładunki przeglądarka zdjęć tworzą tylko src, więc można zacząć data-src dla każdego zdjęcia, a następnie dodać src tylko do widocznych nich.

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

Wygląda to bardzo obiecująco. Wypróbuję to i wybiorę jako rozwiązanie, jeśli zadziała. Dziękuję za Twój czas. – basZero

Powiązane problemy