11498 sujets

JavaScript, DOM et API Web HTML5

Hello,

j'ai un problème avec ajax et jquery :

(function ($) {
	$(document).ready(function() {
		$(".after-month").click(function(){		   
                       $.ajax({
		    });
		   
		});

	});
})(jQuery);


le code marche. mais le .click(function() ne fonctionne qu'une seul fois. et pas d'erreur console.
Modifié par JENCAL (30 Oct 2015 - 11:07)
Salut,

Il est possible que le traitement du résultat de l'ajax supprime l'event "click". Difficile à dire avec si peu de code. Smiley lol
oui tu as raison, enfaite, dans mon ajax, avec le résultat j'écrase la div contenant la classe .after-month
du coup onclick n'est plus reconnu, ce qui est très curieux, je ne comprend pas pk.
Modifié par JENCAL (30 Oct 2015 - 11:53)
C'est normal, comme l'élément auquel l'événement "click" n'existe plus, son événement disparait également. Pour attacher un événement à un élément créer dynamiquement, il faut passer par la délégation d'événement :
$(document).on("click", ".after-month", function(){ ....});

- jquery .on()
- "document" fait référence à tout le DOM, mais tu peux y mettre un sélecteur plus restrictif.
Modifié par Oken (30 Oct 2015 - 12:27)
Je plussoie sur la réponse de Oken, mais je pense même que si l'élément .after-month existe dès l'apparition de ta page, un simple...
$('.after-month').on('click', function(){ ....})

... devrait suffire.
Oui oui il existe, mais je le remplace dans .on click.

je remplace la div par une div avec un nouveau contenu mais la même structure.

je suis en train de tester.
SolidSnake a écrit :
Je plussoie sur la réponse de Oken, mais je pense même que si l'élément .after-month existe dès l'apparition de ta page, un simple...
$('.after-month').on('click', function(){ ....})

... devrait suffire.

Au temps pour moi, ça ne fonctionne plus, ça fonctionnait avec le .live(), mais il est disparu depuis la v1.9 de jQuery.