J'y suis presque! J'ai néanmoins deux soucis...
unwrap s'applique à tous les éléments or si l'élément n'a plus la class slide comme parent, il supprime celle au-dessus. Je me suis dit que je pouvais vérifier si l'élément était visible ou non, mais dans un slideshow tous les éléments ne sont pas visibles et donc le unwrap ne s'appliquait pas à tous... :S
Peut-on dire à unwrap de supprimer uniquement la class slide?
Mon second problème concerne surement le timing. Voici la fonction finale que j'applique :
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 $(document).ready(function (){ $('.categ').click(function(){ /* Affiche ou cache un élément */ var id = this.id; var el = '.el-' + id; if($(el).is(':hidden')){ $(el).delay(800).fadeIn(); }else{ $(el).fadeOut(); } /* Une fois l'élément caché ou affiché, je fais un unwrap */ $("[id^='personne']").unwrap(); /* Ensuite je refais le wrap (qui a été fait une première fois au chargement de la page) */ var divIdx=0 $("[id^='personne']:visible").each(function(){ if($(this).index("[id^='personne']:visible")%3==0){ $(this).wrap($('<div/>').attr({"id":"slide"+(++divIdx),"class":"slide"})); } else { $('#slide'+divIdx).append($(this)) } }); /* Je réinitialise ma fonction slideshow */ carrousel.init($("#staff")); }); });
Et avec cette méthode il n'applique pas le unwrap, est-ce bien une question de timing?
Partager