jQuery vérifier si l'objectif est de lien
J'ai une fonction globale de capture clics.
$(document).click(function(e){
//do something
if(clickedOnLink)
//do something
});
Je veux faire d'autres trucs supplémentaires si la cible est un lien, mais si le <a>
tag effectivement entoure un div (HTML5), la cible sera div.
Quand vous dites "cible" voulez-vous dire de l'élément avec un
Je veux
Je ne pense pas que c'est valide HTML pour avoir un
Il est en HTML5.
Ok, je n'étais pas sûr.
id
qui reçoit le focus, donc correspondent à la :target
pseudo-sélecteur ou de l'élément qui a été cliqué pour déclencher la navigation?Je veux
do something else
si l'utilisateur sera redirigé vers une autre page en cliquant sur un href.Je ne pense pas que c'est valide HTML pour avoir un
<div>
à l'intérieur d'un <a>
Il est en HTML5.
<a>
peut s'enrouler autour d'éléments de bloc. dev.w3.org/html5/markup/a.html#a-changesOk, je n'étais pas sûr.
OriginalL'auteur Cristy | 2013-01-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer de voir si l'élément sur lequel vous avez cliqué sur l'un des deux est, ou qui est un enfant d'un
<a>
tag.OriginalL'auteur Rocket Hazmat
Je crois que l'aide
is
va réellement avoir de meilleures performances que les réponses suggérantclosest
:Celui-ci vérifie si l'élément lui-même est un
a
ou si elle est contenue avec una
.Cela devrait être plus rapide que
closest
car il utilisera matchs sur l'élément lui-même et pas besoin de parcourir l'arborescence DOMclosest
fera..is('a *')
faire ?faut juste utiliser les correspondances dans le soutien des navigateurs. C'est un appel unique pour juste l'élément au lieu d'analyser les dom vérifier chaque élément. Je vais créer un jsperf et mise à jour de la réponse.
pouvez pas sembler obtenir jsperf à permettez-moi d'ajouter plus de cas de tests, mais vous pouvez voir le test correspondant élément imbriqué: jsperf.com/a-or-in-a je soupçonne que l'écart devrait se creuser profondément imbriquée élément, en particulier ceux qui ne sont pas imbriquées à l'intérieur d'un
a
.C'est cool, ce navigateur suport? Cela fonctionne dans tous les navigateurs?
grâce à jquery, il faut travailler dans n'importe quel navigateur. Vous ne pouvez pas voir un grand écart dans le rendement sur de très vieux navigateurs mais qui ne supportent pas
matches
.OriginalL'auteur James Montagne
Essayer cette
OriginalL'auteur kreig
Avec jquery vient d'obtenir l'attribut tagName
$("a").prop("tag");
$("a").prop("tag") == 'a' et de vérifier ensuite si c'est une " contient un div
Poster un violon pour montrer comment cela résout mon problème.
Dans le cas des OP exemple, jsfiddle.net/Af37v, il a fait cela, et obtient
'DIV'
.OriginalL'auteur Greg
Si la cible exacte de lien, vous pouvez utiliser
.est()
Exemple:
EDIT:
Si elle est entourée par d'autres élément qui est à l'intérieur d'une balise d'ancrage, vous pouvez utiliser
closest()
et vérifier si il ont la balise d'ancrage parent ou non, par le biaislength
Exemple:
a
tag.Hey..., juste édité ma réponse...
Oui c'est exact, mais c'est exactement le même que l'on a accepté la réponse. Polluer la page avec des réponses en double n'est jamais une bonne idée 🙂
OriginalL'auteur KeepMove
Mise à jour:
Vous pouvez vérifier si la cible est un un ou si l'un des parents est un un.
http://jsfiddle.net/8jeGV/4/
yep, mal lu ton post, désolé
mis à jour le post
Si
$target
est un<a>
, puis.closest
sera de retour. Donc, vous ne devez$target.closest('a').length > 0
, vous n'avez pas besoin de vérifier.is
.vous avez raison. va arranger 🙂
OriginalL'auteur Robin Drexler
Vous pouvez tester si il y a un
<div>
sous<a>
en testant si le.les enfants()
<div>
a rien à l'intérieur. Si rien n'est à l'intérieur, ou il n'y a pas de<div>
, leif
retournerafalse
.Je suggère ce code:
OriginalL'auteur SeinopSys