Posso assegnare un evento a un div da attivare quando tutti gli elementi del div contenitore sono stati caricati completamente? per esempio. se il div contiene un'immagine, attiva un evento sul div quando l'immagine è stata caricata completamente. Sto usando jquery.assegnare l'evento a div quando è stato caricato completamente
risposta
Non sono sicuro di come si sta aggiungendo dinamicamente il contenuto, ma questo esempio dovrebbe illustrare come potrebbe funzionare.
sta usando .append()
per simulare il vostro contenuto caricato in modo dinamico. Poi, dopo l'accodamento, utilizza .find()
per trovare le immagini e .load()
ad allegare un gestore del carico a loro.
Infine, restituisce il length
proprietà delle immagini. Quindi, nel gestore di carico, al termine del caricamento delle immagini, la lunghezza viene decrementata. Quando arriva a 0
, tutte le immagini vengono caricate e viene eseguito il codice all'interno di if()
.
Esempio:http://jsfiddle.net/ehwyF/
var len = $('#mydiv').append('<img src = "http://dummyimage.com/150x90/f00/fff.png&text=my+image" /><img src = "http://dummyimage.com/160x90/f00/fff.png&text=my+image" /><img src = "http://dummyimage.com/170x90/f00/fff.png&text=my+image" /><img src = "http://dummyimage.com/180x90/f00/fff.png&text=my+image" />')
.find('img')
.load(function() {
if(--len === 0) {
alert('all are loaded');
}
}).length;
In questo modo, viene eseguito il codice basato solo sulle immagini in #mydiv
.
Se ci sono immagini in là che non erano dinamica, e quindi non dovrebbe ottenere l'evento .load()
, si dovrebbe essere in grado di aggiungere un filtro .not()
per escludere quelle proprietà complete
è true
.
Posizionare questo dopo .find()
e prima dello .load()
.
.not(function(){return this.complete})
È difficile controllarlo per un solo div, ma posso suggerire di utilizzare $(window).load()
per verificare se tutte le immagini sono state caricate?
UPDATE:. Se si utilizza Ajax quindi utilizzare il callback per vedere quando il JSON è stato caricato, e quindi collegare $ ("div # id img") Carico() per vedere quando tutte le immagini sono caricate. L'unico problema con questo è che ho notato quando l'immagine è memorizzata nella cache, il caricatore non viene attivato. :(
sto caricando il contenuto del div in modo dinamico, quindi non posso utilizzare $ (window) .load(). Dovrei aver detto nella mia domanda originale .. – amateur
Vedi la mia modifica a breve –
Se si tratta di una sola immagine hai intenzione di aspettare che si può caricare l'immagine con l'Ajax e quindi attivare l'evento in callback Ajax.
Cattura l'evento onload di tutte le immagini nella div, in là sollevare qualche contatore globale di 1. Se questo contatore è uguale alla quantità di immagini nella div ... tutte le immagini terminato il caricamento. Dovrebbe essere semplice usando jQuery.
Questo funziona solo per le immagini, tuttavia, altri elementi non hanno un evento di caricamento.
Per aggiungere a Shadow idea del Mago, si potrebbe provare il seguente codice:
var totalImages = $(".yourImageClass").length;
var loadedImages = 0;
$(".yourImageClass").bind("onload", function() {
loadedImages++;
if (loadedImages == totalImages) {
//all images have loaded - bind event to DIV now
$("#yourDiv").bind(eventType, function() {
//code to attach
});
}
});
- 1. Quando UICollectionView è stato caricato completamente?
- 2. quando un grafico alto è stato caricato completamente?
- 3. sito raschiando: attesa fino a quando sito è completamente caricato
- 4. Eseguire un'attività dopo che WebView è stato caricato completamente
- 5. Come arrivare quando un ImageView è completamente caricato in Android
- 6. Rilevare quando il contenuto Iframe è stato caricato (Cross browser)
- 7. Come identificare se un componente Angular2 è completamente caricato (incluso ViewChilds) quando c'è ngIf nel modello
- 8. Impostare lo stato attivo sul campo in DIV dinamicamente caricato
- 9. Nascondere la pagina finché non è stato caricato tutto Avanzato
- 10. Microsoft.VisualStudio.Web.PasteJson.JsonPackage non è stato caricato correttamente
- 11. libxml-ruby non è stato caricato a x86_64
- 12. QualityToolsPackage non è stato caricato nella compilazione?
- 13. L'intero pacchetto è stato caricato su MsDeploy.axd?
- 14. Rilevamento quando AppBarLayout/CollapsingToolbarLayout è completamente espanso
- 15. Visualizzazione di un avviso quando il sito non viene caricato completamente
- 16. Rileva quando l'interfaccia odoo è completamente carica
- 17. Quando si deve assegnare erroneamente a ENOMEM?
- 18. Xdebug è stato caricato correttamente in Ubuntu ma var_dump/gestione degli errori non è stato sovraccaricato
- 19. Il modulo ".dll" è stato caricato ma il punto di ingresso non è stato trovato
- 20. Il pacchetto 'VSPackage' non è stato caricato correttamente
- 21. Il pacchetto 'SqlStudio Profilo pacchetto' non è stato caricato correttamente
- 22. Il pacchetto 'ApacheCordovaToolsPackage' non è stato caricato correttamente
- 23. Catalogo messaggi Matlab: l'interprete non è stato caricato
- 24. Rileva se il contenuto dell'iframe è stato caricato con successo
- 25. Ember-Data: sapere quando un RecordArray è completamente popolato
- 26. Il mio pacchetto vs non è stato caricato correttamente
- 27. Il controller non è stato caricato da un altro assieme?
- 28. Diverso frammento non è stato caricato con orientamento modificato (android)
- 29. È meglio andare in diretta con un sito non completamente sviluppato, o attendere fino a quando non è completamente funzionante?
- 30. Come posso rilevare se un iframe è stato caricato?
Questo è il metodo migliore che ho incontrato +1 – Blowsie