Die Situation: Ich habe 8 Folien. Wenn die Seite gestartet wird, sind alle bis auf die Anfangsseite ausgeblendet, wenn die erste angeklickt wird, blendet sie aus und dann werden 3 weitere nacheinander eingeblendet, wenn 3 da sind, werden sie ausgeblendet (maximale Zahl, die passen kann) und dann fadeIn die nächsten 3, danach verstecke ich sie und verblasse den Letzten, der bleibt. Das Ergebnis und die Animation ist alles in Ordnung, aber ich habe ein Problem, dass nach dem FadeOut aller Folien das nächste fadeIn zweimal aufgerufen wird und das Gesamtbild der Animation verschraubt wird. Ich habe viele Dinge ausprobiert, die Stopp-Methode, die ich mit Hide und anderen Dingen geschrieben habe, was könnte das Problem verursachen?JQuery FadeIn wird zweimal aufgerufen nach FadeOut
Der Code für jquery:
$(".slide_top").click(function() {
animacija_init();
});
var kadras;
var laikmatis;
function animacija_init() {
kadras = 1;
$(".slide_top").fadeOut(500);
animacija_trigger();
}
function animacija_trigger() {
if(kadras == 1) {
$('.slide.one').delay(500).fadeIn("slow");
console.log("1");
}
if(kadras == 2) {
$('.slide.two').fadeIn("slow");
console.log("2");
}
if(kadras == 3) {
$('.slide.three').fadeIn("slow");
console.log("3");
}
if(kadras == 4) {
$('.slide').fadeOut(300, function() {
$('.slide.four').delay(100).fadeIn("slow");
console.log("4");
});
}
if(kadras == 5) {
$('.slide.five').fadeIn("slow");
console.log("5");
}
if(kadras == 6) {
$('.slide.six').fadeIn("slow");
console.log("6");
}
if(kadras == 7) {
$('.slide').fadeOut(300, function() {
$('#last_slide').delay(300).fadeIn("slow");
console.log("7");
});
}
kadras++;
laikmatis = setTimeout('animacija_trigger()', 2500);
if(kadras == 8) {
baigti_animacija();
}
}
function baigti_animacija() {
clearTimeout(laikmatis);
}
Irgendwelche Tipps? Live-Beispiel hier: www.iamrokas.com/demo_boxi Console.log wird für die Überprüfung verwendet, wenn das Ereignis beginnt
Vielen Dank!
Wo haben Sie die .stop() versucht? –
$ ('. Slide.four'). Stoppen (wahr, wahr) .delay ... und umgekehrt nach Verzögerung. Beide brachten kein positives Ergebnis. Gleiches gilt für die letzte Folie. –
haben Sie versucht, event.stopPropagation(); nach jeder Animation? –