Capture de tous les & lt; a & gt; événement de clic
Je pense à ajouter une fonction javascript pour capturer tous les <a>
cliquez sur les événements à l'intérieur d'une page html.
Je suis donc l'ajout d'une fonction globale qui régit l'ensemble des <a>
cliquez sur les événements, mais ne pas ajouter onclick à chacun (ne pas utiliser .onclick=
ni attachEvent(onclick...)
ni inline onclick=
). Je vais laisser chaque <a>
aussi simple que <a href="someurl">
dans le code html sans les toucher.
J'ai essayé window.onclick = function (e) {...}
mais qui ne capture que tous les clics
Comment puis-je spécifier uniquement les clics sur les <a>
et d'en extraire les liens à l'intérieur de <a>
qui est cliqué?
Restriction: je ne veux pas utiliser tout exra les bibliothèques comme jQuery, juste à la vanille javascript.
source d'informationauteur user1589188
Vous devez vous connecter pour publier un commentaire.
Vous pouvez gérer tous cliquez sur l'aide de la fenêtre.onclick puis filtrer à l'aide de l'événement.cible
Exemple comme vous avez demandé:
Utiliser quelque chose comme:
La technique est appelée événement délégation
[modifier] ajout d'une fonction pour activer un clickhandler pour les liens largeur imbriquée html-éléments, comme:
<a ...><b><i>link text</i></b></a>
Le travail de démonstration.
Vous devez prendre en compte qu'un lien peut être imbriquée avec d'autres éléments et souhaitez parcourir l'arborescence jusqu'à la 'une' de l'élément. Cela fonctionne pour moi:
Voir, par exemple, https://jsfiddle.net/hnmdijkema/nn5akf3b/6/
votre idée de déléguer l'événement de la fenêtre et de vérifier ensuite si "l'événement.cible" est un lien, est une façon d'aller (il vaut mieux serait de document.corps). Le problème ici est que cela ne fonctionnera pas si vous cliquez sur un nœud enfant de votre élément. Pense:
la
target
serait le<b>
élément, de ne pas le lien. Cela signifie que la vérification dee.target
ne fonctionne pas. Donc, vous devez analyser tous les dom arbre pour vérifier si l'élément cliqué est un descendant d'une<a>
élément.Une autre méthode qui nécessite le moins de calcul sur chaque clic, mais les coûts pour initialiser serait d'obtenir tous les
<a>
étiquettes et les joindre à votre événement dans une boucle:(PS: pourquoi dois-je convertir le HTMLCollection à la matrice? voici la réponse.)
Vous pouvez également essayer d'utiliser ce:
Il fonctionne, je viens de tester!
De Travail De Démonstration: http://jsfiddle.net/CR7Sz/
Quelque part dans les commentaires, vous avez mentionné que vous voulez obtenir le 'href' la valeur que vous pouvez faire avec cela:
Démo: http://jsfiddle.net/CR7Sz/1/
Essayer de jQuery et
Dans cette fonction, vous pouvez extraire href valeur de cette façon:
Je suppose que ce simple code va fonctionner avec jquery.
Sans JQuery:
Ci-dessus produira le même résultat.
Très simple :
Le sélecteur est ce que vous voulez sélectionner donc, disons que vous avez appelé bouton
Le code de capure c'est:
Espère que ça aide.