2012-04-05 11 views
5

Mam trochę problemów, próbując to zrozumieć dzisiaj, chcę zrobić 5 przedmiotów w środku mój DOM (który jest wymieniony pod tym samym elementem atrybutu, $ (". elements")) znika i znika, a po przeczytaniu trochę na temat API myślałem, że .each() byłoby świetnym pomysłem do implementacji zanikania w i znikną galerię prezentacyjną.jQuery Animacja, łańcuchowanie, .each() i .animate() (lub fadeIn() i fadeOut())

Jednakże obecnie używam:

$('.elements').each(function() { 
    $(this).fadeIn(2000).delay(200).fadeOut(2000).show(); 
}) 

ale wszystko się wyblakłe i obecnie naraz.

Jak zrobić efekt sekwencyjny, w którym wszystko jest połączone razem i zaczyna się od pierwszego elementu na liście (aka - $ ("elementy"). Eq (0)?) W dół do ostatniego, a następnie ponownie uruchamia się?

Czy naprawdę potrzebuję pętli while, aby zrobić to w javascript/jquery? Miałem nadzieję, że będzie podobna funkcja, którą mógłbym uruchomić dla jQuery, aby zmniejszyć obciążenie i rozmiar pliku.

Czy istnieje również sposób ograniczenia wyświetlania obrazów z mojego div?

Odpowiedz

9
(function loop() { 
    $('.elements').each(function() { 
    var $self = $(this); 
    $self.parent().queue(function (n) { 
     $self.fadeIn(2000).delay(200).fadeOut(2000, n); 
    }); 
    }).parent().promise().done(loop); 
}()); 

wersja demonstracyjna: http://jsfiddle.net/uWGVN/2/

Zaktualizowany aby mieć pętlę bez końca.


2-ty aktualizacja: inny, prawdopodobnie bardziej czytelne, podejście:

(function fade(idx) { 
    var $elements = $('.elements'); 
    $elements.eq(idx).fadeIn(2000).delay(200).fadeOut(2000, function() { 
    fade(idx + 1 < $elements.length ? idx + 1 : 0); 
    }); 
}(0)); 

demo: http://jsfiddle.net/uWGVN/3/

+0

Wow, to jest dokładnie to, czego szukałem! Tylko jedno pytanie: co funkcjonuje (n)? Rozumiem użycie funkcji .queue, ale po prostu nie tę część, w której dodajesz argument. –

+0

Możesz użyć 'n' jako następnego wywołania zwrotnego w kolejce. Jeśli używasz kolejki w ten sposób, odpowiadasz, aby przejść do kolejki, dzwoniąc do podanego wywołania zwrotnego. – Yoshi

+0

ah okay. więc w podstawowych pojęciach po angielsku mam długą listę elementów, z których każda jest rozdzielona na pojedynczą kolejkę, w której każdy element zanika i znika w sumie 4000 milisekund i 200 milisekund opóźnienia między nimi, a po zakończeniu pętli ponownie Metoda .promise(). –

2

Możesz dodać zwrotnego

offical doc:

('#clickme').click(function() { 
    $('#book').fadeOut('slow', function() { 
    // Animation complete. 
    }); 
}); 

i wywołać tę samą funkcję z I ++ et $ (”Elementy). Eq (I)

http://jsfiddle.net/dFnNL/

.
+0

Ciągle łańcuchowy, ale nie do końca to, co szukałem r. Yoshi ma lepszą wersję, w której mniej więcej wyświetla ją po raz jeden w wizualnej perspektywie. Dzięki i tak! –

1

Dla przepełniona, to styl CSS:

div.(class) { position:relative; overflow:hidden; } 
+0

Tak, w mgnieniu oka pamiętałem atrybut przepełnienia. Zadziałało, dzięki! –