Récupérer le clique sur un lien a.

Eléphant du PHP | 60 Messages

13 avr. 2021, 09:53

Bonsoir, j'ai un code un peut comme ceci:
document.body.addEvenrListener('click', function(e) {
    const el = e.target

    if (el.classList.contains('app') {
         console.log(el)
    }
})
/* HTML */
<a href="mon lien" class="app">Lien 1</a>

<a href="mon lien" class="app">
    <i class="icon-1"></i>
    <img src="image">
    Lien 2
     <i class="icon-2"></i>
</a>
Pour le lien 1 tous fonctionne bien, mais lorsque le lien contient d'autres éléments HTML (img, i, span etc.) le target me renvoie l'un des éléments HTML enfant.

Moi je veux pourvoir récupérer uniquement le lien parent peut importe le nombre d'enfant qu'il contient. j'aurais bien pu faire des parentNode mais tous les liens n'ont pas la même structure.

Actuellement je me voir bien faire e.path et récupérer le lien compris dans le tableau, mais c'est pas obtimale je pense.

Merci de m'aider si vous avez une solution.

Eléphant du PHP | 60 Messages

13 avr. 2021, 09:59

Actuellement voila le code que j'ai ecrit, je constate qu'il ne fonctionne pas sur Firefox et en plus je le trouve plutot lourd et pas optimisé.
document.body.addEventListener('click', function(e) {
        let element = e.target;
        while (element) {
            if (element.classList.contains('js-app-link')) {
                e.preventDefault();
                appLink(element);
                element = false;
                break;
            } else if (element.tagName === "BODY") {
                element = false;
                break;
            } else {
                element = element.parentNode;
            }
        }
    });

S'il vous plaît vous avez de meilleures propositions ?

Eléphanteau du PHP | 25 Messages

27 avr. 2021, 23:33

Bonsoir,

Il faut placer l'event listener directement sur la balise ciblée.
Architecte de données & applications web
MCSE Data Management & Analytics