jQuery ne fonctionne que partiellement sur la fonction Click

J’ai ce peu de jQuery (excusez l’horrible html ajouté – ils seront éventuellement raccourcis!)

$(function () { $(".follow").click(function () { var element = $(this); var I = element.data("userid"); var info = 'id=' + I; var Something = $('#latestbettors tr[data-userid=' + I + ']').find('td:eq(0)').text(); $.ajax({ type: "POST", url: "follow.php", data: info, success: function () { $('.follow[data-userid=' + I + ']').fadeOut(200).hide(); $('.following[data-userid=' + I + ']').fadeIn(200).show(); if ($('#yourfollowers table tr > td:contains("You arent currently following any bettors")')) { $('#yourfollowers table tr:contains("You aren\'t currently following any bettors")').remove(); } if ($('#yourfollowers tr:contains("' + I + '")') && $('#yourfollowers tr > td:contains("' + Something + '")').length < 1) $('#yourfollowers table').fadeIn(200).append("" + Something + ""); } }); return false; }); }); $(function () { $(".following").click(function () { var element = $(this); var J = element.data("userid"); var infos = 'id=' + J; $.ajax({ type: "POST", url: "unfollow.php", data: infos, success: function () { $('.following[data-userid=' + J + ']').fadeOut(200).hide(); $('.follow[data-userid=' + J + ']').fadeIn(200).show(); $('#yourfollowers tr[data-userid=' + J + ']').fadeOut(200).remove(); if ($('#yourfollowers table tr').length == 0) { $('#yourfollowers table').append('You aren\'t currently following any bettors'); } } }); return false; }); }); 

J’ai deux tables – les derniers parieurs et suivants. Le dernier tableau des parieurs inclut tous les utilisateurs nouvellement inscrits avec un bouton Suivre à côté de chacun (ou des suivis si l’utilisateur les suit) … Le tableau suivant inclut tous les utilisateurs suivis par l’utilisateur avec un bouton suivant à côté de chacun d’eux.

Lorsque l’utilisateur clique sur le bouton Suivre du tableau “Derniers parieurs”, il ajoute l’utilisateur qu’il a suivi au “tableau suivant” – cela fonctionne bien. Toutefois, lorsque l’utilisateur clique sur le bouton “Suivant”, le tableau “Suivant” s’affiche: rien ne se passe? Pourquoi est-ce?

Pour les éléments générés dynamicment, event doit être délégué à partir de l’un des parents statiques de l’élément ou de l’object document, vous pouvez utiliser la méthode on ou delegate :

 $(document).on('click', '.following', function(){ 

Si vous utilisez jQuery sous la version 1.7, vous pouvez également utiliser la méthode delegate :

 $(document).delegate('.following', 'click', function(){ 

Mis à jour par @ Exception :

Et aussi vous pouvez utiliser

 $('.following').live('click', function(){ 

Mais live est obsolète dans les dernières versions de jQuery. Cela peut fonctionner maintenant si vous utilisez l’ancienne version de jQuery, mais cela peut ne pas fonctionner avec la dernière version de jQuery que vous utilisez.