JR Query : Impossible arreter propagation d'un évènement

Résolu
saintache -  
 saintache -
Bonjour,

Je n’arrive pas à arrêter la propagation d’événement ou alors cela stoppe tout !

Dans mon document HTML
<div>
<p class="ligdetcarnet">blablabla</p>
<p class="ligdetcarnet">encore une ligne</p>
<p class="ligdetcarnet">et encore une autre</p>
<p class="ligdetcarnet">et ainsi de suite ...blablabla</p>
</div>


Avec le script :
$('.ligdetcarnet').click,(function(){  
  console.log("click sur detclick");
  contenudet=$('.ligdetcarnet').text();
 console.log("contenu :" + contenudet);
 });

J’ai bien les traces consoles quand je clique sur une des lignes et dans la variable contenudet le contenu de toutes les lignes bout à bout

Mon objectif : cliquer sur une des lignes pour en récupérer le contenu de la seule ligne que j’ai cliquée

Si je modifie ainsi le script :
 $('.ligdetcarnet').click,(function(e){  
  console.log("click sur detclick");
  e.stopPropagation();
  e.stopImmediatePropagation();
  
  contenudet=$('.ligdetcarnet').text();
  
   console.log("contenu :" + contenudet);
 });

je n’ai jamais rien (aucune trace console) et ceci quelque soit l’endroit où je positionne mes e.stopxxx
En fait dès que j’utilise la forme function(e) plus rien ne se passe (même sans aucune ligne e.stop)

Merci d’avance pour vos avis

EDIT : Ajout des balises de code

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

     $('.ligdetcarnet').click,(function(e){  
      console.log("click sur detclick");
      // e.stopPropagation(); // inutile
      // e.stopImmediatePropagation(); // inutile
      //  contenudet=$('.ligdetcarnet').text(); // faux
      var contenudet = $(this).text(); // $(this) = élément cliqué
      
       console.log("contenu :" + contenudet);
     });
    


    1
  2. saintache
     
    Génial cela marche - Merci beaucoup

    Une remarque : j'ai enlevé le (e) avec lequel cela ne marche pas.

    Une question subsidiaire : dans quel contexte faudrait-il utiliser ces e.stopxxxxxx et pourquoi cela ne fonctionne pas avec eux ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ici ce n'était pas une question de e.stopxxxxxx .. mais un problème de compréhension du fonctionnement des selecteurs...
      Là tu ne ciblait pas l'élément cliqué
      $('.ligdetcarnet').text();
      mais TOUS les éléments ayant la class ligdetcarnet ( en gros.. tu récupérais en "boucle" le text de chaque élément...)
      D'où mon remplacement par
       $(this)
      ;

      Les stopxxxx s'utilisent par exemple lors du clic sur un lien ( pour éviter d'être redirigé et faire une fonction js à la place) ou encore sur le "submit" d'un formulaire..
      0
  3. saintache
     
    OK j'avais bien compris avec la solution
    Par contre pour les e.stopxxxx il va falloir que j'approfondisse ce n'est pas encore bien clair pour moi
    En tous cas merci
    0