IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Je dois passer à coté de quelque chose [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Par défaut Je dois passer à coté de quelque chose [AJAX]
    Bonjour à tous!

    Je demande très rarement de l'aide j'aime mieux la googler, mais je dois avouer que cette fois j'ai besoin d'un coup de pouce. L'erreur doit être bête puisque le code est très simple.

    Ce que j'essaie de faire
    J'ai quatre conteneurs (Div). Lorsqu'un utilisateur clique sur l'un d'entre eux, j'ai une petite animation jQuery (accordéon) pour ouvrir mon div. J'enlève mon événement sur le Div sélectionner et le rajoute si l'utilisateur clique sur un autre.

    Mon problème
    Mon événement s'enlève seulement au deuxième clique, pas au premier. Pourtant c'est la même fonction qui s’exécute !

    Mon code
    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
     
    var constants = {
       'CONTENEUR2': '#397770',
       'CONTENEUR3': '#d8ad66',
       'CONTENEUR4': '#8fa751'
    };
    var id = "";
    var initcolor = "";
     
    $(function(){    
        // Initialise les évènements sur tous les conteneurs
        addAccordeonListener("#conteneur_2, #conteneur_3, #conteneur_4");
     
        var current = null;
     
        $(".conteneur").live("click",function(){
            $("#"+($(this).attr("id"))).die();
     
            if(current!=null){
                $(current).animate({width: "25%"}, {duration:300, queue:false});
                addAccordeonListener(current);
            }             
     
            if(id!="conteneur_1"){
                $("#conteneur_1").animate({width: "10%"}, {duration:300, queue:false});
                $(this).animate({width: "40%"}, {duration:300, queue:false});
            }
     
            current = $(this);
        })
     
     
        function addAccordeonListener(selector){
            // Effet mouser over des blocs de contenus
            $(selector).live("mouseover", function(){
                id = $(this).attr("id");
                var bgcolor = "";
                initcolor = $(this).css("background-color")
                switch(id){
                    case('conteneur_2'):
                        bgcolor = constants.CONTENEUR2;
                        break;
                    case('conteneur_3'):
                        bgcolor = constants.CONTENEUR3;
                        break;
                    case('conteneur_4'):
                        bgcolor = constants.CONTENEUR4;
                        break;                
                }
                $('#'+id).css("backgroundColor", bgcolor);
            })  
            // Effet mouser out 
            $(selector).live("mouseout", function(){
                $('#'+id).css("backgroundColor", initcolor);    
            })
        }
        function removeAccordeonListener(selector){      
            // Enlève l'effet mouser over des blocs de contenus
            $(selector).die();
        }
    });
    Note spéciale
    J'ai dupliqué mon mon événement "click" deux fois ainsi que la méthode qui s'en suit et le code marchait du premier coup!

    À spécifié que le code n'est pas final. Il intégrera un peu de Ajax donc il n'est pas fignolé!

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    J'ai pas tout compris à ton problème, mais en tout cas, j'aime bien le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#"+($(this).attr("id")))


    Tu peux me dire la différence qu'il y a avec $(this) ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Par défaut
    Citation Envoyé par Bovino Voir le message
    J'ai pas tout compris à ton problème, mais en tout cas, j'aime bien le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#"+($(this).attr("id")))


    Tu peux me dire la différence qu'il y a avec $(this) ?
    Effectivement
    ce genre de bout de code apparait quand on devient désespérer de trouver une solution En j'aurais du le corriger avant de le poster!

  4. #4
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Par défaut
    Ou appelle-tu la méthode : removeAccordeonListener() ??

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Par défaut
    Citation Envoyé par tigunn Voir le message
    Ou appelle-tu la méthode : removeAccordeonListener() ??
    Encore la j'ai copy/paste trop vite mon code. Lorsque je dis .die() je fais la même chose que la fonction. Elle est juste la pour rendre mon code plus lisible.

  6. #6
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Par défaut
    pas compris ...

Discussions similaires

  1. [AC-2007] Faire passer un paramètre ou quelque chose du genre
    Par rogerfon dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/12/2012, 22h46
  2. Réponses: 8
    Dernier message: 07/06/2006, 22h29
  3. [thread][methodologie]Quelque chose que je ne comprends pas!
    Par norkius dans le forum Général Java
    Réponses: 5
    Dernier message: 16/03/2005, 14h01
  4. Réponses: 3
    Dernier message: 27/04/2004, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo