2013-05-02 6 views
0

J'ai un script qui, lorsqu'il est cliqué, exécute une fonction avec une requête ajax.Evénement Exécuté une seule fois

jQuery('.go').on('click', function(){ 
    id = ""; 
    id = $(this).parent().parent().find("input").val();    
    request_event("go",id); 
    }); 
jQuery('.noGo').on('click', function(){ 
    id = ""; 
    id = $(this).parent().parent().find("input").val();    
    request_event("noGo",id); 
}); 

Après l'exécution ajax, la valeur de la div (ce div contenant la valeur span) est modifiée.

switch(operation){ 
    case "go": 
     jQuery('.eventBox input[value="'+id+'"]').parent().find("#confirmBox").html("<span class='noGo cursorIcon'>N&atilde;o Confirmar</span>"); 

break; 
case "noGo": 
    jQuery('.eventBox input[value="'+id+'"]').parent().find("#confirmBox").html("<span class='go cursorIcon'>Confirmar</span>"); 


break; 
    } 

le problème est que dans tous les nouveaux "liens", l'événement on click n'est pas déclenché.

quelqu'un peut-il m'enfuir?

Répondre

1

Pour tous les nouveaux liens, vous devez faire ceci:

jQuery(document).one('click', '.go', function() { 
    id = ""; 
    id = $(this).parent().parent().find("input").val(); 
    request_event("go", id); 
}); 
+0

ce workd mais vous cliquez une seconde fois, l'événement s'exécute deux fois. – macieira

+0

Vous souhaitez que l'événement click ne s'exécute qu'une seule fois? –

+0

oui. une fois pour chaque clic. exemple: maintenant vous cliquez sur 1 fois - exécuter 1 requête ajax. cliqué la deuxième fois - exécuter 2 requête ajax avec les mêmes valeurs. cliqué sur la troisième fois - s'exécute 3 demande ajax avec les mêmes valeurs et continue ... – macieira

3

Utilisez .on() le plus proche élément statique ou le document comme celui-ci pour les éléments nouvellement créés

jQuery(document).on('click','.go', function(){ 
+1

Bonne idée, mauvaise exécution - vous devez passer un sélecteur après le type d'événement pour configurer la délégation d'événement. –

+0

@AnthonyGrist Merci, j'ai oublié d'ajouter que – Anton

+0

comme je l'ai dit à Palash Mondal, quand j'ai cliqué 3 fois, l'événement 3 fois à la fois. – macieira

0

On dirait que pour obtenir "on" registre des événements pour les éléments dynamiques, la mise en œuvre doit être un peu différente comme ceci

$(document).on("click",".go",function(){ 
    alert("hello"); 
    $('#divTest').append("<span class='go'>dynamic span</span>"); 
}); 

Cochez cette case dans fiddle