Я пытаюсь научить себя эффектам Jquery, чтобы оживить мои сайты.Я создал учебную страницу, которая выглядит следующим образом:
<article><a class="front-fire" href="1"></a></article>
<article><a class="front-fire" href="2"></a></article>
<article><a class="front-fire" href="3"></a></article>
<div class="presentation-wrapper">
<div class="load"></div>
<div class="presentation"></div>
</div>
<div class="kill></div>
<article><a class="front-fire" href="4"></a></article>
<article><a class="front-fire" href="5"></a></article>
<article><a class="front-fire" href="6"></a></article>
<div class="presentation-wrapper">
<div class="load"></div>
<div class="presentation"></div>
</div>
<div class="kill></div>
Цель состоит в том, чтобы, если я щелкну ссылку, она развернется до ближайшего presentation-wrapper
, исчезнет, загрузится gif, загрузится содержимое, исчезнетGIF, а затем показывает содержание.При нажатии на другую ссылку она скрывает все открытые presentation-wrapper
s, а затем показывает, выполняет ли последовательность открытий заново.Я думаю, что у меня есть представление о том, как связать анимации вместе, но я не могу понять, как циклически проходить классы div
s и скрывать те, которые видимы.
Вот мой javascriptво внешнем файле.#primary
приложения предназначены для моих целей отладки:
$(document).ready(function() {
$('a').click(function(e) {
e.preventDefault();
$('#primary').append("pressed");
var toLoad = $(this).attr('href')+' #post-body';
var wrap = $(this).parents().filter('article').nextUntil('.kill', '.presentation-wrapper');
var load = $(wrap).children('.load');
var pres = $(wrap).children('.presentation');
var allwraps = $(".presentation-wrapper");
$(".presentation-wrapper").each(function() {
if ($(this).is(':visible')) {
$('#primary').append("6");
$('.presentation').fadeOut(3000, function() {
$('#primary').append("7");
$('.presentation-wrapper').slideUp(3000);
});
}
});
switcher();
function switcher() {
$(wrap).slideDown(3000, loadLoader);
$('#primary').append("1");
function loadLoader() {
$(load).fadeIn(3000, loadContent);
$('#primary').append("2");
}
function loadContent() {
$(pres).load(toLoad, hideLoader);
$('#primary').append("3");
}
function hideLoader() {
$(load).fadeOut(3000, showNewContent);
$('#primary').append("4");
}
function showNewContent() {
$(pres).fadeIn(3000);
$('#primary').append("5");
}
};
});
});
Я знаю, что это большой вопрос, и, возможно, это не то место, чтобы спрашивать, но я бился головой о стенупытаясь выяснить, что не так.Это работает с первого клика, но .each()
, похоже, все испортило!
:: Добавление: возможно, эта деталь поможет.По какой-то причине функция «7» в .each () продолжает срабатывать всякий раз, когда любой из элементов div виден в любое время.Как будто это полицейский, который отрицает все, что происходит после его вызова! ::