wydarzenia są ładne, ale ponieważ nie ma natywnej wydarzeniem dla wyglądu, wydarzenia wymagają wiedząc kiedy element jest dodawany, dzięki czemu zdarzenie może być wyzwalane ręcznie. Możesz użyć odpytywania, aby przetestować wygląd i wykonać akcję, gdy się pojawi. Działa to doskonale w przypadku treści dodawanych poza kontrolą użytkownika, na przykład z poziomu danych wprowadzanych przez użytkownika, ajax lub innych programów.
setInterval(function() {
$('.my-element-class:not(.appeared)')
.addClass('appeared')
.each(function() {
console.log("here I am!")
});
}, 250);
Pozwoli to sprawdzić pod kątem wystąpienia elementu przez nazwę klasy (lub jakichkolwiek innych kryteriów selektora ty Supply) 4 razy każdy drugi i uruchomić kod, gdy pojawia się nowa pozycja. Po wyświetleniu elementu zostanie dodana klasa .appeared, aby zapobiec ponownemu wykryciu tej instancji. Jeśli chcesz przetestować tylko jeden wygląd, możesz uprościć tak i zamknąć pobieranie po wykryciu.
var testAppearTmr = setInterval(function() {
if ($('.my-element-class').length) {
clearInterval(testAppearTmr);
console.log("here I am!")
}
}, 250);
JQuery appear Wtyczka jest zbudowany wokół tych technik i ma dużo więcej opcji, takich jak testy do jeżeli rzecz znajduje się w obszarze widzenia, ale jeśli wszystko, co chcesz zrobić, to test dla kilku elementów dodawanych do domu powyższy kod jest znacznie bardziej przydatny niż wtyczka.
Jak definiujesz "kiedy się pojawi"? to znaczy, kiedy załadował się do DOM, lub gdy został pokazany przez jakiś inny kod jQuery? – BenM
Lub gdy element jest widoczny, ale nie w widoku, a użytkownik jest przewijany do niego? – Tommi
Przepraszam, miałem na myśli, gdy został całkowicie dodany do DOM –