Bonjour,

J'ai commencé à écrire un plugin jquery et malheureusement, celui-ci ne fonctionne seulement si je l'appelle deux fois.
le plugin carrousel fonctionne bien, le plugin galerie seulement si il est appelé deux fois.
J'avoue avoir de la peine à comprendre l'ordre d'exécution des fonctions javascript…
Si quelqu'un a une petite piste c'est avec plaisir, je cherche depuis des heures et ça devient une obsession

Merci beaucoup à tous.
Très bonne journée.

Code : 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
$(document).ready(function(){ 	// le document est chargé
   $(".navigation .toggleSubMenu.galerie ul a").click(function(){ 	// on selectionne tous les liens et on définit une action quand on clique dessus
 
        var page=($(this).attr("href")); // on recuperer l' adresse du lien
	$.ajax({
            url: page, // url de la page à charger
            cache: false,
            success:function(html){
                    afficher(html);
                    $("#galerie").pluginCarrousel();
                    $("#galerie").pluginGalerie();
                    $("#galerie").pluginGalerie();
            },
            error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete
            }
	});
	return false; // on desactive le lien
   });
});
 
 
function afficher(donnes){
    $("#page_content").empty(); // on vide le div
    $("#rotate").remove();
    $("#page_content").append(donnes);
 
    $("#conteneur").css('height','612px');
    $("#conteneur").css('width','940px');
 
    $("#galerie").css('height','688px');
    $('#galerie').css('overflow','hidden');
 
    $("#page_content").css({"float":"left"});
    $("#page_content").css({"width":"940px"});
 
 
    //------------------------------- transformation du menu pour la galerie ----------------------------------------
    $("#menu").css({"background-color":"rgb(240,240,240)"});
    $("#menu").append('<h3 id=rotate>menu</h3>');
    $("#rotate").hide();
    $("#rotate").css({
        'width' : '30px',
        'margin-top' : '40px',
        '-moz-transform' : 'rotate(-90deg)',
        '-webkit-transform' : 'rotate(-90deg)',
        '-o-transform' : 'rotate(-90deg)'
    });
 
    $("#menu").mouseover(function(){
        $("#rotate").hide();
        $(this).css({
            'padding-top' : '20px',
            'padding-right' : '20px',
            'padding-bottom' : '20px'
        });
        $(this).children('ul').show();
    });
    $("#menu").mouseout(function(){
        $(this).children('ul').hide();
        $(this).css({'padding': '0px'});
        $("#rotate").show();
    });
}
Code : 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
 
(function($)
{       
        /**
         * @param options
         *  classCarrousel : la class du slider à creer
         *  idCarrousel : l'id du slider à creer
         */
	$.fn.pluginCarrousel=function(options)
	{           
           //On définit nos paramètres par défaut
           var defauts=
           {
               'classCarrousel': 'carrousel',
               'idCarrousel': 'thumbs',
               'nbElementsAffiche' : 11,
               'delai' : 500,
               'fadeIn' :500,
               'callback' : null
           };  
 
           // fusion des parametres
           var parametres=$.extend(defauts, options);
 
           return this.each(function()
	   {
           // ------------------------------- début du plugin ---------------------------------------------------------
               $(this).children('.categorie').hide();
               $(this).after('<ul class='+parametres.classCarrousel+' id='+parametres.idCarrousel+'></ul>');
               // pour tous les liens, on les copie vers le slider
               var lien = $(this).find('a');
               $(lien).each(function(){
                   $('#'+parametres.idCarrousel).append($(this).clone());
               });
               $('#'+parametres.idCarrousel).find('a').wrap('<li></li>');
 
               // Element de référence pour la zone de visualisation (ici le premier item)
               var Reference = $('.'+parametres.classCarrousel+' li:first-child');
               // Nombre d'éléments de la liste
               var NbElement = $('.'+parametres.classCarrousel+' li').length;
 
               // Englobage de la liste par la zone de visualisation
               $('.'+parametres.classCarrousel).wrap('<div class="carrousel-conteneur"></div>');
               // Englobage de la liste de visualisation et des boutons
               $(".carrousel-conteneur").wrap('<div class="placement-carrousel"></div>');
               $(".placement-carrousel").hide();
               // Application d'une largeur à la bande de diapositive afin de conserver une structrure horizontale
               $('.'+parametres.classCarrousel).css("width", (Reference.width() * NbElement) );
               //remettre à 0 le margin si on recharge une autre catégorie
               $('.'+parametres.classCarrousel).css("margin-left","0px");
 
                // Ciblage de la zone de visualisation largeur hauteur
                $(".carrousel-conteneur")
                    .width(  Reference.width() * parametres.nbElementsAffiche)
                    .height( Reference.height() )
                    // Blocage des débordements
                    .css("overflow", "hidden")
                    .css("margin-left","auto")
                    .css("margin-right","auto");
 
                // Insertion des boutons de navigation
                if(NbElement>parametres.nbElementsAffiche)
                {
                    $(".placement-carrousel").append(''
                        +    '<ul class="carrousel-pagination">'
                        +    '    <li class="carrousel-prev"><button type="button"></button></li>'
                        +    '    <li class="carrousel-next"><button type="button"></button></li>'
                        +    '</ul>'
                        +    '');
                }
 
                // si la fonction anonyme call back est défini, on l'appelle
                if(parametres.callback)
                {   
                    parametres.callback($(this))
                }
                $(".placement-carrousel").delay(parametres.delai).fadeIn(parametres.fadeIn);
 
                // -------------------------- gestion des click ------------------------------------------------
                var cpt=0;
                $(".carrousel-next button").click(function() {
                    if((NbElement-cpt)>parametres.nbElementsAffiche) {
                        cpt++;
                        $(".carrousel").animate({
                            marginLeft : - (Reference.width() * cpt)
                        },250);
                    }
                });
                $(".carrousel-prev button").click(function() {
                    if(cpt > 0) {
                        cpt--;
                        $(".carrousel").animate({
                            marginLeft : - (Reference.width() * cpt)
                        },250);
                    }
                });
               // -------------------------- Fin de gestion des click ------------------------------------------------
 
           // ------------------------------- fin du plugin ---------------------------------------------------------
 
 
	   });						   
	};
})(jQuery);

Code : 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 
(function($)
{       
       /** renvoie tous les objet jquery pour permettre le chainage
        *  @param options est un objet litteral
        */
	$.fn.pluginGalerie = function(options)
	{
 
            // définit les paramètres par défauts
            var defauts =
            {   
                'thumbListId': "thumbs", // liste des liens pour le menu galerie
                'imgViewerId': "viewer",
                'activeClass': "active",
                'activeTitle': "Photo en cours de visualisation",
                'loaderTitle': "Chargement en cours",
                'loaderImage': "images/loader/loader.gif"
            }
            // on fusionne les paramètre d'entrées
            var parametres = $.extend(defauts, options);
 
            return this.each(function()
            {
            // ------------------------------- début du plugin ---------------------------------------------------------
              var thumbLinks = $("#"+parametres.thumbListId).find("a"),
                firstThumbLink = thumbLinks.eq(0),
                highlight = function(elt){
                  thumbLinks.removeClass(parametres.activeClass).removeAttr("title");
                  elt.addClass(parametres.activeClass).attr("title",parametres.activeTitle);
                },
                loader = $(document.createElement("img")).attr({
                  alt: parametres.loaderTitle,
                  title: parametres.loaderTitle,
                  src: parametres.loaderImage
                });
 
              highlight(firstThumbLink);
 
 
 
 
                var box = $('<p></p>').attr("id",parametres.imgViewerId).append($('<img />').attr({alt: "", src: firstThumbLink.attr("href")}));
                box.insertBefore('.legende_loader');
 
 
 
              var imgViewer = $("#"+parametres.imgViewerId),
                bigPic = imgViewer.children("img");
 
              thumbLinks.click(function(e){
                  e.preventDefault();
                  var $this = $(this),
                    target = $this.attr("href");
                  if (bigPic.attr("src") == target) return;
                  highlight($this);
                  imgViewer.html(loader);
                  bigPic
                    .load(function(){
                        // évite le bug -> utilisateur click avant la fin de l'anim sur l'image suivante
                        bigPic.stop().css({"opacity":"1"});
                        imgViewer.html($(this).fadeIn(650));
                    })
                    .attr("src",target);
 
                    // index vaut la valeur de la photo
                    var index = thumbLinks.index($this);
                    // on charge la légende qui correspond à la photo clické
                    // chargerLegende(pCategorie, index);
 
                });
 
                   // ------------------------------- affichage de la légende ---------------------------------------------------------
 
                    $('#galerie').append('<div class="legende_loader"><button id=slideButton></button><p></p></div>');
 
                    var legendeAffiche=true;
 
                    $(".legende_loader button").click(function() {
                        if(legendeAffiche){
                            rentreLegende();
                            legendeAffiche=false;
                        }
                        else{
                            afficheLegende();
                            legendeAffiche=true;
                        }
                    });
 
 
                    alert("findu plugin");
 
 
 
 
            // ------------------------------- fin du plugin ---------------------------------------------------------
            });						   
	};
})(jQuery);
 
 
 
 
// fonction pour charger la bonne légende
function chargerLegende(pCategorie, pIndexLegende){
    // on insère la légende dans la galerie
    var elementListe = pCategorie.children('dl').eq(pIndexLegende).children('dt').text();
    $('.legende_loader').children('p').html(elementListe);
}
 
// affiche légende avec animation
function afficheLegende() {
        $(".legende_loader").animate({marginTop : -65} ,600);
        $(".legende_loader").removeClass('close');
}
// rentre légende avec animation
function rentreLegende() {
        $(".legende_loader").animate({marginTop : -20} ,400);
        $(".legende_loader").addClass('close');
}