213 votes

Comment obtenir l'élément cliqué (pour l'ensemble du document) ?

J'aimerais obtenir l'élément courant (quel qu'il soit) dans un document HTML sur lequel j'ai cliqué. J'utilise :

$(document).click(function () {
    alert($(this).text());
});

Mais très étrangement, j'obtiens le texte de tout le document ( !), et non de l'élément cliqué.

Comment obtenir uniquement l'élément sur lequel j'ai cliqué ?

Exemple

<body>
    <div class="myclass">test</div>
    <p>asdfasfasf</p>
</body>

Si je clique sur le texte "test", j'aimerais pouvoir lire l'attribut avec $(this).attr("myclass" ) dans jQuery.

2 votes

La fonction de gestion s'exécute dans la portée de l'élément auquel elle est ajoutée, ici le document. Vous devrez obtenir l'élément target de l'objet événement.

3voto

Aft3rL1f3 Points 482

Je sais que cet article est très ancien, mais pour obtenir le contenu d'un élément en référence à son ID, voici ce que je ferais :

window.onclick = e => {
    console.log(e.target);
    console.log(e.target.id, ' -->', e.target.innerHTML);
}

2voto

Abu Talha Points 3

C'est la façon la plus simple d'obtenir un élément cliqué en javascript.

window.addEventListener('click', (e) => console.log(e.target));

0voto

$(document).click(function (e) {
    alert($(e.target).text());
});

-2voto

Henry Lockett Points 1

Voici une solution qui utilise un sélecteur jQuery pour cibler facilement les balises de n'importe quelle classe, ID, type, etc.

jQuery('div').on('click', function(){
    var node = jQuery(this).get(0);
    var range = document.createRange();
    range.selectNodeContents( node );
    window.getSelection().removeAllRanges();
    window.getSelection().addRange( range );
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X