IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Appel AJAX .load() jquery ne fonctionne qu'une seule fois [AJAX]


Sujet :

jQuery

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Appel AJAX .load() jquery ne fonctionne qu'une seule fois
    Bonjour,

    Sur le site que je développe en ce moment, j'ai une liste de membres qui est affichée et pour chaque membre, il y a un bouton qui permet de supprimer ce membre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <button value="<?php echo $value['id']; ?>" class="dellMembre">Supprimer</button>
    J'ai ma fonction jquery en bas de page qui fait un GET pour supprimer le membre en question et mettre à jour une partie de la page (ici la classe contentWrapper).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script>
    	$('.dellMembre').on('click', function() {
    	var value=$(this).attr('value');
    	console.log(value);
    	$('.contentWrapper').load("index.php?section=deleteMembres&delete=" +value+" "+".contentWrapper");  
    	});
    	</script>
    Cette fonction fonctionne bien mais ... une seule fois; en effet une fois que la page est mise à jour grâce à ce script les boutons ne fonctionnent plus
    Le problème sembre uniquement provenir de cette ligne de code car ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.contentWrapper').load("index.php?section=deleteMembres&delete=" +value+" "+".contentWrapper");
    si j'enlève cette ligne le console.log(value) fonctionne tout le temps lorsque j'appuie sur tout les boutons.

    Pour que la fonction fonctionne à nouveau, je suis obligé de rafraîchir la page manuellement.

    Auriez-vous une solution ?
    Merci beaucoup ! et bonne soirée
    (ps: j'ai un doute, dois-je poser cette question dans la section forum javascript ?)

  2. #2
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!


    Je ne suis pas certain que la méthode load() puisse être appliquée à un sélecteur de classe.
    Un ascenseur est une machine qui passe quand même la moitié de son temps à descendre.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Je viens de remplacer la classe .contentWrapper par un id #contentWrapper et d'adapter le script en conséquence mais aucun changement n'est à noter

    Edit: En regardant sur d'autres sites pour voir si ce problème existait ailleurs j'ai vu une réponse qui n'apportait pas de solution "What’s happening is the stuff you add in the div doesn’t get added to the DOM tree", il y a aussi des gens qui parlent d'une fonction live: j'ai essayer de remplacer .on par .live mais ça plante.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/ remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$('.dellMembre').on('click', function() {
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$('body').on('click', '.dellMembre', function() {
    ou
    	$('#contenu').on('click', '.dellMembre', function() {
    En effet, la fonction supprime (à priori ?) le bouton de class '.dellMembre'... qui n'est donc plus présent dans le DOM.
    Même si d'autres boutons de même classe sont présents, ça "perturbe"...
    $('body'). ou $('#contenu'). fournissent un "point fixe", toujours présent.
    Voir :

    2/ Par contre, on ne sais rien de ".contentWrapper" ??
    C'est un div existant dès le début ? ou créé ?...
    Dernière modification par Invité ; 11/01/2015 à 09h12.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    .contentWrapper est une div qui existe dès le debut

    Mille merci ! ça fonctionne nickel !
    Vous m'enlevez une sacrée épine du pied !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pourquoi on error goto ne fonctionne qu'une seule fois ?
    Par alsimbad dans le forum Général VBA
    Réponses: 9
    Dernier message: 05/09/2014, 12h09
  2. Survol ne fonctionne qu'une seule fois sur IE
    Par elekaj34 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/08/2009, 14h06
  3. [JSTL] foreach qui ne fonctionne qu'une seule fois
    Par Ouguiya dans le forum Taglibs
    Réponses: 16
    Dernier message: 02/08/2007, 16h17
  4. Réponses: 6
    Dernier message: 13/07/2007, 11h46
  5. [AJAX] [XMLHttp][IE]Fonction qui ne fonctionne qu'une seule fois
    Par narnou dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/07/2007, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo