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 :

Lien ne fonctionne pas après insertion dans une liste ul avec append()


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Pérou

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Février 2023
    Messages : 3
    Par défaut Lien ne fonctionne pas après insertion dans une liste ul avec append()
    Bonjour à tous,

    J'ai un petit souci.

    J'ai une liste de type unordered list avec des item li avec chacun une class (delete_journee_etiquette) qui les lie avec un script jquery qui permet de réaliser une action ajax: effacer cet item.

    Un autre script jquery permet de rajouter un item en ajax à cette liste.

    Quand une entrée est rajoutée, un append() rajoute visuellement ce nouvel item à la liste sans avoir à recharger tout la liste.

    Ce nouvel item a également la class qui devrait le lier au script permettant de pouvoir effacer cet item si on en a envie. Mais ce lien ne marche pas. Il devrait aller chercher le script via la class qu'il a mais il me fait un refresh de la page. Pas top puisque c'est le but contraire qui est recherché.

    Script de la liste avant de rajouter un item :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <ul id="liste_etiquettes_journee_73" class="ul_dans_tableau">
            <li class="left_align id_journee_etiquette_1">
               <a href="" title="Effacer" class="delete_journee_etiquette" data-id-journee-etiquette="1"><i class="fas fa-trash fontawesome_so_small normal_color"></i></a> <span title="Créé le 18/07/2023 à 23:10:04 par olivier">Transfert Out</span>
            </li>
            <li class="left_align id_journee_etiquette_2">
                 <a href="" title="Effacer" class="delete_journee_etiquette" data-id-journee-etiquette="2"><i class="fas fa-trash fontawesome_so_small normal_color"></i></a> <span title="Créé le 18/07/2023 à 23:10:09 par olivier">Vol client</span>
            </li>
            <li class="left_align id_journee_etiquette_536">
                 <a href="" title="Effacer" class="delete_journee_etiquette" data-id-journee-etiquette="536"><i class="fas fa-trash fontawesome_so_small normal_color"></i></a> <span title="Créé le 20/07/2023 à 16:04:54 par olivier">Service Trek</span>
           </li>
    </ul>

    Et voici le script Jquery qui permet efface les item :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script>
    $(".delete_journee_etiquette").click(function() {
     
                var action='delete_journee_etiquette';
                var id_journee_etiquette=$(this).data('id-journee-etiquette');
     
                $.get('journees.php?action=' + action + '&id_journee_etiquette=' + id_journee_etiquette,function(data){
     
                    $("#updates").html(data).fadeIn();
                });
     
                return false;
     
            });
    </script>
    Tout item présent dans la liste au moment de charger le script entier fonctionne, c'est à dire que l'on efface sans problème tout item souhaité.

    Et maintenant le script qui insère le nouvel item dans la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
         $(function(){
     
             var id_journee='<?php echo $id_journee;?>';
            var id_journee_etiquette='<?php echo $array['etiquettes']['id_journee_etiquette'];?>';
             var etiquette='<?php echo $array['etiquettes']['etiquette'];?>';
     
     
     
            $("#liste_etiquettes_journee_" + id_journee).append('<li class="left_align id_journee_etiquette_' + id_journee_etiquette +'"><a href="" title="<?php echo EFFACER;?>" class="delete_journee_etiquette" data-id-journee-etiquette="<?php echo $array['etiquettes']['id_journee_etiquette'];?>"><i class="fas fa-trash fontawesome_so_small normal_color"></i></a> <span class="orange" title="<?php echo RAJOUTE_RECEMMENT;?>">' + etiquette + '*</span></li>');
    });
    </script>
    Et c'est là où ça bloque, l'item est bien ajouté à la liste MAIS le lien ne semble pas obéir à la class qui va bien, du coup, ça fait un refresh.

    Quelle est la solution à cet épineux problème ? Suis-je passe à côté de quelque chose ?
    Merci par avance pour toute aide précieuse

  2. #2
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 433
    Par défaut
    Bonjour,

    Puisque tu utilises jQuery, tu peux utiliser la délégation des événements via la fonction on() pour que tes listeners soient attachés aux éléments ajoutés via ajax :
    https://learn.jquery.com/events/event-delegation/

Discussions similaires

  1. Affichage popup après insertion dans une table
    Par PowerGel dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/03/2012, 12h08
  2. Réponses: 4
    Dernier message: 22/06/2009, 12h12
  3. Réponses: 5
    Dernier message: 25/05/2009, 15h58
  4. Réponses: 2
    Dernier message: 28/10/2007, 17h46
  5. Affichage d'une image après insertion dans une base
    Par leloup84 dans le forum Langage
    Réponses: 9
    Dernier message: 24/01/2006, 16h34

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