2015-07-23 11 views
5

Questo è non è un duplicato di this perché utilizza anche l'approccio document.ready che ovviamente non funziona.Non caricare immagini all'interno di elementi nascosti

Desidero evitare che il browser carichi immagini (<img>) nidificate all'interno di elementi nascosti <div>.

Così ho provato, ma il javascript viene eseguito troppo tardi, il browser inizia già a scaricare le immagini che non dovrebbe.

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

C'è una buona soluzione javascript per questo? Oppure devo usare <img srctmp="...."/> e quindi sostituire srctmp per src tramite javascript per quelle immagini che NON sono annidate all'interno di un nascosto?

+1

Credo che impostando l'attributo 'src' a' "" 'impatto doesnt questo. Prova a rimuovere l'attributo intero dopo averlo salvato in 'data-src' o qualcosa del genere? – Alex

+1

È impossibile _stop_ scaricare le fonti di immagini tramite JavaScript. Dovrai lasciare l'attributo 'src' vuoto e poi inserirlo successivamente con un altro attributo, ma usare' data-srctmp'. – Xufox

+0

Il codice all'interno di '$ (document) .ready (function() {...});' verrà sempre eseguito dopo che il DOM è pronto (ovvero dopo che tutte le immagini e il contenuto sono stati caricati). Quindi non usare 'ready'. –

risposta

4

È possibile utilizzare un attributo data invece il src, browser carica le immagini formano solo src, in modo da poter iniziare con data-src per ogni immagini e quindi aggiungere il src solo per quelle visibili.

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

Questo sembra molto promettente. Lo proverò e lo selezionerò come soluzione se funzionasse. Grazie per il tuo tempo. – basZero

Problemi correlati