11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je cherche à sélectionner un id créer préalablement grâce à un append. Cela ne marche pas, avez vous des solutions ?


$("#ajoutCondition").click(function(){

   var listeConditions = (chargerListe());
   $('#detail').empty().append('<h4><i class="glyphicon glyphicon-plus"> </i> Ajouter une condition</h4><h5>Sélectionnez une condition :</h5>'+listeConditions+'<h5>Sélectionnez un opérateur : </h5>'+listeConditions+'<div style="margin-top:20px"><a class="btn btn-primary btn-primary" id="BtnAjoutCondition"><span class="glyphicon glyphicon-chevron-down"></span> Valider</a><a href="#" class="btn btn-primary btn-danger" style="float:right"><span class="glyphicon glyphicon-remove-sign"></span> Annuler</a></div>');

$("#conditions").removeClass('col-md-9').addClass('col-md-6');
$("#detail").addClass('col-md-3');

    });
	
$('#BtnAjoutCondition').click(function(){
		
 alert('ghgf');
		
});


Merci
Modifié par arnaudLac (14 Mar 2015 - 12:24)
Sauf erreur de ma part, ce que je lis signifie que:

- dans un premier temps tu définis qu'un clic sur "ajoutCondition" va créer un petit paragraphe qui contiendra un bouton appelé "BtnAjoutCondition"
- dans un deuxième temps tu dis ce qu'il faudra faire quand on appuiera sur ce bouton.

Comme le bouton n'existe pas au moment où tu exécutes cette deuxième partie, il ne se passe rien et c'est normal.
N'oublie pas que jQuery ne stocke pas les choses à faire indépendamment de leur existence, mais les attache à un nœud existant du document.
Tu dois pouvoir t'en tirer en mettant la définition du clic à l'intérieur de la première fonction.
Modifié par PapyJP (14 Mar 2015 - 13:49)
Bonjour.

Pour résoudre ton soucis, il faut utiliser la délégation :
$(document).on('click', '#BtnAjoutCondition', function(e) {
  e.preventDefault()
  
  // Code
})

Le $(document) peut être remplacé par un sélecteur d'un parent du bouton, qui serait déjà sur la page par défaut.

PapyJP a écrit :
Tu dois pouvoir t'en tirer en mettant la définition du clic à l'intérieur de la première fonction.

Il faut éviter ce genre de blague, parce que si tu cliques plusieurs fois sur le "premier" bouton, il va ajouter plusieurs fois l'écouteur du clic, et risque de multiplier d'autant l'action associée.
Modifié par SolidSnake (16 Mar 2015 - 14:41)