J'ai un groupe de 4 divs et je cherche à utiliser jQuery pour les animer une fois, puis avoir un délai en utilisant delay(), puis exécuter un autre ensemble de animations sur eux, remettant les divs à leur configuration d'origine. Voici le code que j'ai:jQuery: plusieurs animations avec un délai sur un ensemble de divs
//only selectors called 'option1' are affected by delay, and not 'option1 img' or 'option2'
$("#option1").showOption1().delay(3000).hideOption1();
//if i don't attach to #option1, delay doesn't work, but the animations that need to happen simultaneously work
$(document).showOption1().delay(3000).hideOption1();
jQuery.fn.showOption1 = function(){
$("#option2, #option3, #leftColumn").fadeOut(1000);
$("#option1").css("zIndex", "5");
$("#option1").animate({
left: "370px",
}, 1500);
$("#option1 img").animate({
width: "500px",
}, 1500, function(){
$("p.optionText").text('hello');
});
return this;
}
jQuery.fn.hideOption1 = function(){
$("#option1 img").animate({
width: "175px",
}, 1500);
$("#option1").animate({
left: "743px",
}, 1500);
$("#option2, #option3, #leftColumn").fadeIn(2000);
$("#option1").css("zIndex", "1");
return this;
}
J'ai essayé deux façons de gérer ces deux fonctions, comme on le voit sur les lignes 2 et 5. Dans le cas de la ligne 2, showOption1() fonctionnera bien, mais seulement
$("#option1").animate({
left: "743px",
}, 1500);
fonctionnera à partir de hideOption1() après le délai. Le reste de hideOption1() est déclenché immédiatement après la fin de showOption1(), en ignorant le délai. D'autre part, si j'exécute la ligne 5, tout le code dans hideOption1() s'exécute simultanément comme souhaité, mais ignore complètement le délai, s'exécutant immédiatement après la fin de showOption1(). Comment puis-je avoir tout le code dans hideOption1() exécuté simultanément après le délai?
Merci beaucoup d'avance!
Tout d'abord, merci d'avoir regardé ça! J'ai modifié les heures .fadeOut() et .animate() pour qu'elles soient identiques; C'était une erreur de ma part. J'ai eu mes fonctions comme vous l'avez suggéré au début, mais j'ai ensuite choisi de les attacher à jQuery pour que je puisse profiter du chaînage et mettre des delay() entre les commandes (et éventuellement utiliser des fonctions de rappel). Donc vous ne pensez pas que je peux utiliser delay() pour affecter plusieurs sélecteurs? Puis-je retourner plusieurs sélecteurs (comme le retourner, retourner # option2, etc)? – Waleed
En outre, pourriez-vous clarifier ce que vous entendiez par «alternativement, avez-vous réellement utilisé les sélecteurs (ceci), en cachant les autres options via une classe par exemple»? – Waleed