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

JavaScript Discussion :

Gestion des évènements avec une superposition d'éléments


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Par défaut Gestion des évènements avec une superposition d'éléments
    Bonsoir,

    J'ai du mal à gérer un évènement dans des div imbriqués. Voici mon code (simplifié) :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <style>
        #mainview { position:relative; margin:0; height:720px; overflow:hidden; }
        #mainview #locations li { position:absolute; width:86px; height:43px; list-style-type:none; }
        #mainview #locations li a { display:block; position:absolute; bottom:0px; left:-2px; width:90px; height:70px; outline:none; }
        #mainview #barDesc { position:relative; top:600px; display:none; }
    </style>
     
    <div id="mainview" onclick="document.getElementById('barDesc').style.display='none'">
        <div id="locations">
            <li><a href="javascript:document.getElementById('barDesc').style.display='block'"></a></li>';
        </div>
        <div id="barDesc"></div>
    </div>
    Donc j'ai ma vue principale "mainview" dans laquelle est contenue une barre d'infos "barDesc". Cette dernière est invisible, jusqu'à ce qu'on clique sur un label "locations". Puis on clique n'importe où sur la page pour faire disparaître la barre.
    Le problème, c'est que je ne souhaite pas que la barre disparaisse si on clique dessus ! Ce qui est le cas, car le div se trouvant en-dessous capte toujours les évènements ! J'ai essayé d'ajouter des z-index sur la feuille de style, ça n'a rien changé.
    Comment puis-je y remédier ?

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Pourquoi ne pas faire ainsi tout simplement ?
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div id="mainview">
        <div id="locations">
            <li><a href="javascript:document.getElementById('barDesc').style.display='block'"></a></li>
        </div>
        <div id="barDesc"></div>
    </div>
    Je dis ça parce que je vois pas pourquoi on cliquerait sur le premier div

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Par défaut
    Ben ça c'est pas résoudre un problème mais le supprimer

    Il faut cliquer sur le premier div pour faire disparaître le second (et il n'est pas question de faire autrement).

    Mon message va faire tout le tour des forums on dirait

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Pourquoi ne pas faire un switch directement sur ton li a ? C'est lui qui fait disparaitre et apparaitre le div.

    http://www.developpez.net/forums/d46...r-masquer-div/

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Par défaut
    Ben non, je tiens vraiment à ce que ce soit mon div d'arrière-plan qui gère la disparition.

    Mais c'est bon, j'ai trouvé une solution en écrivant une petite fonction javascript, après avoir appris que les divs conteneurs étaient appelés après les div imbriqués

    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
    var clickOnBar = false;
     
    function hideBarDesc(obj)
    {
    	if (obj.id == "barDesc")
    	{
    		clickOnBar = true;
    	}
    	else
    	{
    		if (clickOnBar == true)
    		{
    			clickOnBar = false;
    			return false;
    		}
    		else
    		{
    			document.getElementById('barDesc').style.display='none';
    		}
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des flux avec une Socket
    Par LittleBean dans le forum Langage
    Réponses: 6
    Dernier message: 24/05/2011, 17h47
  2. Problème gestion des évènements avec un JTree
    Par lyaminat dans le forum Composants
    Réponses: 2
    Dernier message: 14/10/2008, 15h44
  3. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57

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