Bonjour,
J'ai un petit souci avec la fonction closest() dont je ne comprends pas pourquoi elle ne fonctionne pas. Le principe de ce que je veut mettre en place est le suivant :
1. J'ai un p avec des tags dedans :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <p class="profExpTag" id="profExpTag_8d8e353b98d5191d5ceea1aa3eb05d43"> <span class="label label-primary" id="profExpTag_c59e74a9473598cc14f823cad41875f0">Auto entrepreneur</span> <span class="label label-primary" id="profExpTag_3a52d7a872d0db4f9abe2adeefe72ca2">Créer sa boîte</span> </p>
2. Lorsque je clique sur le p (ou les tags), j'ajoute des x aux tags permettant de les supprimer, le code devient le suivant :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <p class="profExpTag" id="profExpTag_8d8e353b98d5191d5ceea1aa3eb05d43"> <span class="label label-primary" id="profExpTag_c59e74a9473598cc14f823cad41875f0">Auto entrepreneur <i class="fa fa-times rem" data-id="profExpTag_c59e74a9473598cc14f823cad41875f0" style="color:white"></i> </span> <span class="label label-primary" id="profExpTag_3a52d7a872d0db4f9abe2adeefe72ca2">Créer sa boîte <i class="fa fa-times rem" data-id="profExpTag_3a52d7a872d0db4f9abe2adeefe72ca2" style="color:white"></i> </span> </p>
3. Lorsque je clique n'importe où sur le document, je retire les x des tags.
4. Lorsque je clique sur le x d'un tag, je voudrais retirer le tag (avec un remove). Le souci est que lorsque je clique sur le x d'un tag, mon jQuery se comporte comme si j'avais cliqué n'importe où dans le document et retire les x des tags.
Voici le test que je fais pour vérifier que j'ai cliqué sur un élément fils du <p> de base :
Je ne comprends pas pourquoi cela ne fonctionne pas. Normalement, en cliquant sur le x d'un tag, la fonction closest(profExpTag_8d8e353b98d5191d5ceea1aa3eb05d43) doit remonter jusqu'au p de base et $(e.target).closest('#' + origineId)[0] ne devrait pas être undefined, non ? Ai-je mal compris l'utilisation de closest ? y'a un truc qui m'échappe, mais je ne comprends pas quoi (depuis plusieurs jours :-( )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $(this).on('click', function (){ origine = $(this); origineId = $(this).attr('id'); // plein de code de gestion des autres évènements if(e.target.id != origineId && $(e.target).closest('#' + origineId)[0] === undefined ) { // code de retrait des x des tags } })
Merci de votre aide !
Partager