Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de clique sur une balise

Sujet résolu
    21 juillet 2017 à 23:38:11

    Bonsoir,

    J'ai un problème, lorsque je clique sur des balises <li> je dois cliquer 2x pour que la liste que je crée manuellement s'affiche, mais je ne comprends pas pourquoi.

    voici le code qui me permet de créer: 

    $(document).ready(function(){
    
    	/* Légumes, Fruits ou Autres? */
    	$("li").click(function(){
    
    		var id_liste = $(this).attr("id");
    		var input_id_liste = document.getElementById(id_liste);
    
    		input_id_liste.addEventListener("click", function(){
    
    			$.ajax({
    				url: "Serveur.php",
    				type: "POST",
    				data: { li : id_liste},
    				datatype: "JSON",
    				success: function(retval){
    					retval = JSON.parse(retval);
    
    					var i = 0;
    
    					if(!document.getElementById("SousList"))
    					{
    						PutUl(id_liste, "SousList","SousListeClass");
    
    					
    						while(i < retval.length)
    						{
    							console.log("retval: " + retval[i].Type);
    							if(!document.getElementById(retval[0].Type))
    								PutList("SousList", retval[i].Type, retval[i].Type, "articles");
    							else
    								PutList(retval[i-1].Type, retval[i].Type, retval[i].Type, "articles");
    
    							i++;
    						}
    					}
    					else
    					{
    						$(".articles").remove();
    						$(".SousListeClass").remove();
    					}
    				}
    			})
    		})
    	})
    
    })

    Si il vous faut d'autre bout de code n'hésitez pas.

    D'avance merci

    • Partager sur Facebook
    • Partager sur Twitter
      22 juillet 2017 à 1:00:48

      Bonjour,

      Si je ne me trompe pas, la première fois, le traitement est en train de se faire et il faut cliquer une deuxième fois pour que l'affichage soit pris en compte par le navigateur.

      J'avais eu le même problème quand j'avais fait une connexion utilisateur en ajax, la connexion se faisait bien mais il fallait réactualiser la page pour que tout soit pris en compte.

      • Partager sur Facebook
      • Partager sur Twitter
      "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
        22 juillet 2017 à 1:35:56

        Salut,


        Je connais pas du tout Jquery et c'est peut être naïf mais... lors d'un 1er clic sur un élément "li" y'a juste la déclaration de la variable "id_liste" puis la déclaration de "input_id_liste" qui se fait et puis... plus rien, en tout cas jusqu’à ce que tu re-clic dessus ("input_id_liste.addEventListener("click", function()...") et là le reste s’exécute (affichage etc), d'où le deuxième clic...Non ?

        -
        Edité par Hyp32 22 juillet 2017 à 1:42:29

        • Partager sur Facebook
        • Partager sur Twitter

        On est tous le con d'un autre.

          22 juillet 2017 à 12:12:43

          Bonjour,

          Comme le dit Hyperdestru, tu ajoutes un deuxième listener quand l'utilisateur clique une première fois sur le li?

           Il faudrait faire plus simple:

          $(document).ready(function(){
           
              /* Légumes, Fruits ou Autres? */
              $("li").click(function(){
           
                  var id_liste = $(this).attr("id");
                  var input_id_liste = document.getElementById(id_liste);
                  $.ajax({
                      url: "Serveur.php",
                      type: "POST",
                      data: { li : id_liste},
                      datatype: "JSON",
                      success: function(retval){
                          retval = JSON.parse(retval);
                          var i = 0;
           
                          if(!document.getElementById("SousList"))
                          {
                              PutUl(id_liste, "SousList","SousListeClass");
           
                              while(i < retval.length)
                              {
                                  console.log("retval: " + retval[i].Type);
                                  if(!document.getElementById(retval[0].Type))
                                      PutList("SousList", retval[i].Type, retval[i].Type, "articles");
                                  else
                                      PutList(retval[i-1].Type, retval[i].Type, retval[i].Type, "articles");
           
                                  i++;
                              }
                          }
                          else
                          {
                              $(".articles").remove();
                              $(".SousListeClass").remove();
                          }
                       }
                  })
              })
           
          })



          • Partager sur Facebook
          • Partager sur Twitter
            22 juillet 2017 à 12:38:03

            Bonjour à tous, 

            Oui je n'avais pas fait attention au 2e événements que je mettais après la déclarations des variables

            Un tout grand merci à vous :)

            Sujet résolu.

            • Partager sur Facebook
            • Partager sur Twitter

            Problème de clique sur une balise

            × 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