Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2011, 09h55   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 87
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 87
Points : 11
Points : 11
Par défaut Menu déroulant et event

Bonjour,
J'ai réussi à faire un genre de menu déroulant sur le click d'un bouton.
Le menu déroulant est supprimé lorsqu'il perd le focus et lorsqu'il re-clique sur ce bouton.
Le problème vient lorsque je clique sur le bouton pour fermer ce menu déroulant : il supprime bien le menu déroulant mais se ré ouvre dessuite.C'est normal, l'ouverture du menu est conditionné à l event click.
Donc j 'ai pensé à supprimer son event lorsque j'ouvre le menu et à le réactiver à sa fermeture.Mais si je fais cela sans passer par un timeout , le menu déourlant se réouvre si je veux le fermer.

Pensez vous à une meilleur solution que celle proposée ci-dessous ?


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 function OpenPopupSelection(elt)
        {
            if(elt.attr("expanded") == "false")
            {
                elt.focus();
                elt.attr("expanded","true")
                elt[0].onclick= function(){};
                elt.addClass("headerSelectionClick");
                elt.blur(function(){ClosePopupSelection($(this));});
                var build="<div class=\"popupHeaderSelection\"><a>Tous</a><a>Aucun</a><a>Dernière position</a></div>";
                elt.append(build);
            }
        }
 
        function ClosePopupSelection(elt)
        {
            setTimeout(function(){elt[0].onclick=function(){ C($(this)); };},300);
 
            elt.unbind("blur");
            elt.attr("expanded","false");
            elt.removeClass("headerSelectionClick");
            elt.find("div").remove();
        }
skwi6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 10h55   #2
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonjour

Votre message me fait penser à "Problème : ma fonction hover() provoque un va-et-vient !".

Mais comment voulez-vous que l'on vous aide avec cet extrait de code, c'est comme si vous me demandiez de résoudre un puzzle avec le tiers du jeu !
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 11h36   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 87
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 87
Points : 11
Points : 11
Code html :

Code :
1
2
 
<a href=\"javascript:void(0);\" onclick=\"OpenPopupSelection($(this));\">Option</a>"
Code javascript :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
function OpenPopupSelection(elt)
        {
            if(elt.attr("expanded") == "false")
            {
                elt.focus();
                elt.attr("expanded","true")
                elt[0].onclick= function(){};
                elt.addClass("headerSelectionClick");
                elt.blur(function(){ClosePopupSelection($(this));});
                var build="<div class=\"popupHeaderSelection\"><a>Tous</a><a>Aucun</a><a>Dernière position</a></div>";
                elt.append(build);
            }
        }
 
        function ClosePopupSelection(elt)
        {
            setTimeout(function(){elt[0].onclick=function(){ C($(this)); };},300);
 
            elt.unbind("blur");
            elt.attr("expanded","false");
            elt.removeClass("headerSelectionClick");
            elt.find("div").remove();
        }
Mon problème est de savoir s'il n' y a pas une meilleure solution d'écrire la fonction ClosePopupSelection(elt) et plus particulièrement la ligne qui correspond au settimeout(...) afin d'éviter d'appeler la fonction OpenPopupSelection(elt) lorsque je clique sur le lien "Option" pour justement fermer la popup?
skwi6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h21.


 
 
 
 
Partenaires

Hébergement Web