Partage
  • Partager sur Facebook
  • Partager sur Twitter

Detecter un clic en dehors de plusieurs div différentes

Sujet résolu
    15 février 2011 à 14:32:39

    Bonjour à tout les zéros !

    Je suis actuellement en train de coder une sorte d'interface à la windows pour parcourir des dossiers.
    Je bloque sur une fonctionnalité car je ne sais pas comment l'implémenter :

    J'ai des div dans ma page représentant les dossiers, je voudrais qu'un clic n'importe ou dans la page en dehors de ces éléments active une fonction.
    En gros il faudrait que lorsque je clique n'importe où dans document la fonction document.onmousedown soit lancée mais qu'à ce moment là je puisse savoir si le clic a aussi eu lieu sur une de ces div en particulier.
    Dans mon cas ce serait pour dé-sélectionner toutes les div qui sont sélectionnées si je clique dans le vide.
    Les div sont sélectionnées avec une fonction sur "onclick()"

    N'hésitez pas si vous avez besoin de plus de précisions.

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      15 février 2011 à 14:59:31

      Bonjour

      Perso moi je mettrais un event sur le body et j'analyserais le e.target / e.currentTarget (ou un truc du genre)

      function target(e){
      alert(e.target);
      }
      window.addEventListener('click', target, false);
      


      Bon tu risques de chercher un peu alors je t'ai fais une petite fonction

      function target(e){
      var mess = "";
      for (var v in e){mess += v +" = "+e[v] + "<br/>";}
      document.body.innerHTML = mess;
      return false;
      }
      window.addEventListener('click', target, false);
      


      voilà Kazerd
      • Partager sur Facebook
      • Partager sur Twitter
        15 février 2011 à 15:32:53

        Salut,

        Merci pour ta réponse rapide et ton code,
        peut tu me préciser la différence entre originalTarget et target ?
        est-ce que currentTarget est à [Object Window] parce que la fonction est appelée en boucle jusqu'au dernier élément parent ?

        Merci

        EDIT: C'est bon ça marche ! :p

        //appelée lors d'un clic
        function mouseDown(e)
        {
        	//si on ne clique pas sur un dossier (la classe fond désigne le fond du dossier)
        	if(e['originalTarget'].getAttribute('class') != 'fond')
        	{
        		select('undefined');
        	}
        //le reste de la fonction change les variable shiftPressed, altPressed, etc... pour savoir si une touche est enfoncée au moment du clic
        }
        selected = new Array();
        function select(dossier)
        {
        	if(dossier != 'undefined')
        	{
        		//on traite le dossier et l'ajoute au tableau selected
        	}
        	else //on remet les style d'origine sur les éléments sélectionnés et on vide le tableau
        	{
        		for(i in selected)
        		{
        			selected[i].style.border = '1px solid #e0dfe3';
        			selected[i].style.margin = '13px';
        		}
        		selected = new Array(); 
        	}
        }
        

        Merci beaucoup Kazerd pour cette astuce, j'avais jamais cherché à comprendre et voir ce qu'il y avait dans la variable event, je vais me pencher plus sur le sujet à l'avenir. :)

        Bonne fin de journée à toi.
        • Partager sur Facebook
        • Partager sur Twitter

        Detecter un clic en dehors de plusieurs div différentes

        × 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