Eventi sono belle, ma perché non c'è evento nativo per l'aspetto, eventi richiedono sapendo quando un l'elemento viene aggiunto in modo che l'evento possa essere attivato manualmente. È possibile utilizzare il polling per verificare l'aspetto di qualcosa e fare un'azione quando appare. Funziona perfettamente per i contenuti aggiunti al di fuori del tuo controllo, ad esempio da input dell'utente, ajax o altri programmi.
setInterval(function() {
$('.my-element-class:not(.appeared)')
.addClass('appeared')
.each(function() {
console.log("here I am!")
});
}, 250);
Questo controllerà per la comparsa di un elemento dal nome della classe (o qualsiasi altro criterio di selezione che fornite) 4 volte al secondo ed eseguire il codice quando appare un nuovo elemento. Quando viene visualizzato un oggetto, viene aggiunta la classe .appeared per impedire che tale istanza venga nuovamente rilevata. Se si desidera testare solo per un aspetto, è possibile semplificare in tal modo e chiudere il polling dopo il rilevamento.
var testAppearTmr = setInterval(function() {
if ($('.my-element-class').length) {
clearInterval(testAppearTmr);
console.log("here I am!")
}
}, 250);
Il appear plugin per jQuery è costruito attorno a queste tecniche e ha molte più opzioni, come i test per se l'articolo è nella zona di vista, ma se tutto quello che vogliamo fare è di prova per un paio di articoli che viene aggiunto per la dom il codice di cui sopra è molto più parsimonioso di un plugin.
fonte
2015-07-14 17:05:05
Come si definisce il "quando appare"? cioè quando è stato caricato nel DOM o quando è stato reso visibile da qualche altro codice jQuery? – BenM
Oppure quando l'elemento è visibile da solo, ma non nella finestra e l'utente lo ha fatto scorrere? – Tommi
scusate, intendevo quando è stato completamente aggiunto al DOM –