Partage
  • Partager sur Facebook
  • Partager sur Twitter

Clique hors zone avec JQuery

Sujet résolu
    23 août 2011 à 21:10:47

    Bonsoir,

    Étant débutant en JS (donc en JQuery) je sollicite votre aide. :)

    Je veux faire apparaitre <div class="connexion"> lors d'un clique sur <div class="bouton_toolbar"> disons. Jusque là, tout va bien, le problème, c'est quand je veux le fermer.
    Il faudrait que ça se ferme quand on clique autre part que sur le <div class="connexion">. J'ai essayé avec not(), j'ai essayé avec ce que proposait Google, mais je n'ai pas réussi à adapter les codes.

    D'ailleurs, voila mon code JS :
    $(document).ready(function() {
    	
    	var ouvert = false;
    	$('.connexion').hide();
    
    	$(".bouton_toolbar").click(function () {
    		if (!ouvert) {
    			$(this).toggleClass("selected");
    			$('.connexion').toggle();
    			ouvert = true;
    		}
    	});
    	
    	$("body").not('.connexion').not('.bouton_toolbar').click(function(){
    	if (ouvert) {
    		$('.connexion').toggle();
    		$(this).removeClass("selected");
    		ouvert = false;
    	}
    	});
    	
    });
    

    Et le code HTML :

    <div class="toolbar">
    <span class="bouton_toolbar connexion_b" id="connexion">Connexion</span>
    </div>
    <div class="connexion">
    Test
    </div>
    


    Merci d'avance pour votre aide.
    Pilou
    • Partager sur Facebook
    • Partager sur Twitter
      23 août 2011 à 23:05:37

      Tu mets un onmouseover et un onmouseleave qui retiennent si ta sourie est sur l'element ou pas dans une variable.
      Et tu mets un onclick sur le body qui fait ce que tu veux selon la valeur de la variable.

      Ou alors, tu mets un onclick sur le body et dans ce onclick tu recupere l'element clique. Ensuite tu fais une boucle qui regqrde le pqrent un cran plus haut a chaque fois et si c'est ta zone ou body, arrete. Et quand il s'arrete, si c'est ta zone, le clic a eu lieu dans ta zone et sinon, le clic a eu lieu dehors.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        24 août 2011 à 0:15:25

        Salut, voilà je te passe de mémoire le code de mon site :

        $('#connexion').click(funtion(e) {
            e.stopPropagation();
            $('.connexion').toggle();
            $(this).toggleClass();
        });
        
        
        $('.connexion').click(funtion(e) {
            e.stopPropagation();
            //$(this).show();
            //$('#connexion').addClass();
        });
        
        $('body').click(funtion() {
            $('.connexion').hide();
            $('#connexion').removeClass();
        });
        


        Les deux lignes en commentaire sont peut-être facultatives dans ton cas, essaye sans puis avec si ça marche pas :)
        Je corrigerais demain s'il faut ;)

        EDIT : J'ai corrigé ;)
        • Partager sur Facebook
        • Partager sur Twitter
          24 août 2011 à 0:25:18

          Aussi. Tu mets un onclick sur le body et sur ton element et si on clic sur ton element, tu stop la propagation ce qui fait que le body ne recois pas le clic.
          • Partager sur Facebook
          • Partager sur Twitter
            24 août 2011 à 12:22:36

            Merci à vous, Salixor, ta méthode ne fonctionnait pas... Je ne sais pas pourquoi. J'ai donc réussi à faire quelque chose de bien avec celle de xavierm02.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              24 août 2011 à 12:29:39

              Ah oui j'ai mis un live ...
              • Partager sur Facebook
              • Partager sur Twitter

              Clique hors zone avec JQuery

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown