Si vous ne voulez pas qu'il pointe vers quoi que ce soit, vous ne devriez probablement pas utiliser la <a>balise (anchor).
Si vous voulez que quelque chose ressemble à un lien mais n'agisse pas comme un lien, il est préférable d'utiliser l'élément approprié (tel que <span>), puis de le styliser en utilisant CSS:
<spanclass="fake-link"id="fake-link-1">Am I a link?</span>
.fake-link {
color: blue;
text-decoration: underline;
cursor: pointer;
}
De plus, étant donné que vous avez tagué cette question "jQuery", je suppose que vous souhaitez attacher un hander d'événement de clic. Si tel est le cas, faites la même chose que ci-dessus, puis utilisez quelque chose comme le JavaScript suivant:
$('#fake-link-1').click(function(){/* put your code here */});
Cela pose un problème: cela ne permet pas la navigation par onglets.
6
Notez que (comme le souligne Iraimbilanja) l'approche span désactive ici la possibilité d'invoquer la fonction à l'aide du clavier, ce que je considérerais comme un problème d'utilisabilité.
Fredrik Mörk
3
Également un problème d'accessibilité. Vous pouvez le résoudre en utilisant un élément de bouton (généré à partir de JavaScript afin que les utilisateurs non-JS n'obtiennent pas un contrôle cassé).
Quentin
4
Voici une solution rapide pour cela: tabindex = "0" sur un élément sans lien permettra la navigation au clavier dans la plupart des navigateurs modernes.
Mathias Bynens
1
Un autre «problème» est que vous n'avez pas la pseudo classe CSS: hover ne fonctionnera pas sur des éléments qui ne sont pas des liens dans IE6. Mais comme vous ajoutez de toute façon ces éléments via JavaScript (du moins, vous devriez), vous pouvez tout aussi bien écrire un script qui ajoute une classe .hover à l'élément lorsqu'il est survolé.
Mathias Bynens
268
Il existe quelques solutions moins que parfaites:
1. Lien vers une fausse ancre
<ahref="#">
Problème: cliquez sur le lien pour revenir en haut de la page
2. Utilisation d'une balise autre que "a"
Utilisez une balise span et utilisez la jquery pour gérer le clic
Problème: interrompt la navigation au clavier, doit changer manuellement le curseur de survol
Problème: casse lors de la liaison d'images dans IE
Solution
Comme ils ont tous leurs problèmes, la solution sur laquelle j'ai choisi est de créer un lien vers une fausse ancre, puis de renvoyer false à partir de la méthode onClick:
<ahref="#"onClick="returnfalse;">
Ce n'est pas la solution la plus concise, mais elle résout tous les problèmes avec les méthodes ci-dessus.
J'utilise généralement le javascript: void (0); approche, car l'utilisation de # affiche l'URL actuelle dans la barre de Firefox au survol de la souris, ce qui peut être trompeur pour l'utilisateur.
lucaferrario le
8
breaks when linking images in IEQu'est-ce que ça veut dire?
eugene
14
@eugene cette question a maintenant 3 ans, mais IE faisait disparaître les images lorsqu'elles étaient entourées d'un lien vers une fonction vide. Je ne sais pas quand il a été corrigé, mais cela fonctionne dans IE10, c'est tout ce que j'ai installé. J'utilise personnellement maintenant<a href="javascript:;">
zaius
1
J'ai aussi utilisé des commentaires là-dedans: <a href="javascript:void(0); // Afficher la palette des propriétés">. De cette façon, lorsque l'utilisateur survole, il voit le commentaire qui peut lui donner un indice à quoi s'attendre lorsqu'il clique. (Bien que vous puissiez également utiliser une info-bulle.)
Robin Zimmermann
5
Il semble que cela href="javascript:"soit également suffisant et fonctionne dans les derniers navigateurs majeurs. Pas besoin de point-virgule, en fait PhpStorm suggère même de le supprimer.
Bien que cela semble "correct" car cela arrête le bouillonnement d'événements, "return false" est beaucoup moins verbeux et fait la même chose. La seule fois où vous voudriez faire cela, c'est si vous avez déjà des gestionnaires d'événements enregistrés pour cliquer sur des liens via jQuery.
aleemb
25
Il y a tellement de façons de le faire comme
Ne pas ajouter et hrefattribuer
<aname="here"> Test <a>
Vous pouvez ajouter un événement onclick au lieu de href comme
<aname="here"onclick="YourFunction()"> Test <a>
Ou vous pouvez ajouter une fonction void comme celle-ci, ce qui serait le meilleur moyen
N'oubliez pas de définir le style de votre balise d'ancrage si vous supprimez l' hrefattribut car il ne se comportera plus comme un lien hypertexte (même si l'onclick fonctionne toujours), vous devrez réinitialiser des éléments tels que cursor: pointer;et le :hoversélecteur.
Cette réponse doit être mise à jour pour refléter les nouvelles normes Web (HTML5).
Ce:
<atabindex="0">This represents a placeholder hyperlink</a>
... est du HTML5 valide. L'attribut tabindex le rend focusable au clavier comme les hyperliens normaux. Vous pourriez aussi bien utiliser l' spanélément pour cela comme mentionné précédemment, mais je trouve que l'utilisation de l' aélément est plus élégante.
C'est également du HTML4 valide, mais il ne formera pas l'ancre comme un lien.
entre le
1
Je ne savais pas que c'était du html4 valide, mais la spécification HTML5 mentionne explicitement le cas d'utilisation. Et les styles qui ne ciblent pas l'attribut href fonctionneront très bien, seuls les styles de navigateur par défaut peuvent être un problème.
aross le
1
Cela ne déclenche pas non plus d' clickévénement lorsque l'utilisateur concentre l'élément et appuie sur Entrée (testé dans Firefox 51).
torvin
@torvin, c'est simple. Utilisez l' keydownévénement.
aross
bizarrerie snazzy, mais dans la fenêtre 10, il ajoute une boîte bordée autour de l'élément
1-14x0r
12
Voici les trois façons dont <a>la hrefpropriété tag de la balise ne renvoie à rien:
<ahref="JavaScript:void(0)"> link </a><ahref="javascript:;">link</a><ahref="#"onclick="returnfalse;"> Link </a>
Je sais que c'est une vieille question, mais je pensais quand même ajouter mes deux cents:
Cela dépend de ce que le lien va faire, mais en général, je pointerais le lien vers une URL qui pourrait éventuellement afficher / faire la même chose, par exemple, si vous faites un petit message sur la boîte:
De cette façon, les très anciens navigateurs (ou les navigateurs avec JavaScript désactivé) peuvent toujours naviguer vers une page à propos distincte, mais plus important encore, Google la récupérera également et explorera le contenu de la page à propos.
Je vous remercie! Cela a parfaitement fonctionné pour mon cas. Où je voulais avoir la balise Anchor à ouvrir dans un nouvel onglet lorsqu'il y a une URL, mais rien si aucune URL. Dans le cas de #, il acceptait un CLIC et le déplaçait en haut de la page. N'ayant pas de partie href comme vous l'avez suggéré. Cela a résolu le problème! Le formatage a l'air bien en raison d'une balise, le problème de clic a disparu sans href. Je vous remercie!!!
Mohsin
1
Si quelqu'un d'autre se demande si c'est HTML5 valide, alors la réponse est OUI :) stackoverflow.com/a/33046203/5323892 . Voici un exemple tiré de la page des standards (voir le troisième élément li): <nav> <ul> <li> <a href="https://stackoverflow.com/"> Accueil </a> </li> <li> <a href = "/ news "> Actualités </a> </li> <li> <a> Exemples </a> </li> <li> <a href="https://stackoverflow.com/legal"> Juridique </a> </li> </ ul> </nav>
Mohsin
Cela fonctionne mais si vous voulez que le pointeur de la souris se transforme en doigt, ajoutez simplement href = "JavaScript: void (0)" comme suggéré sur la réponse de @Rutesh Makhijani.
Tarik
3
La seule chose qui a fonctionné pour moi était une combinaison de ce qui précède:
c'était ma balise d'ancrage. donc renvoyer false sur l'événement onClick = "" n'est pas utile ici. Je viens de supprimer la propriété href = "#" et cela a fonctionné pour moi comme ci-dessous
J'ai rencontré ce problème sur un site WordPress. Les en-têtes des menus déroulants avaient toujours l'attribut href=""et le plugin d'en-tête utilisé uniquement les URL standard autorisées. La solution la plus simple était juste d'exécuter ce code dans le pied de page:
React ne prend plus en charge l'utilisation d'une fonction comme celle-ci href="javascript:void(0)"dans votre balise d'ancrage, mais voici quelque chose qui fonctionne plutôt bien.
href
attribut at dedans.Réponses:
Si vous ne voulez pas qu'il pointe vers quoi que ce soit, vous ne devriez probablement pas utiliser la
<a>
balise (anchor).Si vous voulez que quelque chose ressemble à un lien mais n'agisse pas comme un lien, il est préférable d'utiliser l'élément approprié (tel que
<span>
), puis de le styliser en utilisant CSS:De plus, étant donné que vous avez tagué cette question "jQuery", je suppose que vous souhaitez attacher un hander d'événement de clic. Si tel est le cas, faites la même chose que ci-dessus, puis utilisez quelque chose comme le JavaScript suivant:
la source
Il existe quelques solutions moins que parfaites:
1. Lien vers une fausse ancre
Problème: cliquez sur le lien pour revenir en haut de la page
2. Utilisation d'une balise autre que "a"
Utilisez une balise span et utilisez la jquery pour gérer le clic
Problème: interrompt la navigation au clavier, doit changer manuellement le curseur de survol
3. Lien vers une fonction javascript void
Problème: casse lors de la liaison d'images dans IE
Solution
Comme ils ont tous leurs problèmes, la solution sur laquelle j'ai choisi est de créer un lien vers une fausse ancre, puis de renvoyer false à partir de la méthode onClick:
Ce n'est pas la solution la plus concise, mais elle résout tous les problèmes avec les méthodes ci-dessus.
la source
breaks when linking images in IE
Qu'est-ce que ça veut dire?<a href="javascript:;">
href="javascript:"
soit également suffisant et fonctionne dans les derniers navigateurs majeurs. Pas besoin de point-virgule, en fait PhpStorm suggère même de le supprimer.Pour ne rien faire du tout, utilisez ceci:
la source
<a href="javascript:;">
. PS ne fonctionne pas avectarget=_blank
cependantLa bonne façon de gérer cela est de "rompre" le lien avec jQuery lorsque vous gérez le lien
HTML
JS
Ces deux derniers appels arrêtent le navigateur d'interpréter le clic.
la source
Il y a tellement de façons de le faire comme
Ne pas ajouter et
href
attribuerVous pouvez ajouter un événement onclick au lieu de href comme
Ou vous pouvez ajouter une fonction void comme celle-ci, ce qui serait le meilleur moyen
la source
href
attribut car il ne se comportera plus comme un lien hypertexte (même si l'onclick fonctionne toujours), vous devrez réinitialiser des éléments tels quecursor: pointer;
et le:hover
sélecteur.Que voulez-vous dire par rien?
ou
la source
Je pense que tu peux essayer
Le seul hic que je vois ici est que la sécurité du navigateur de haut niveau peut inciter à exécuter javascript.
Bien que ce soit l'un des moyens les plus simples
cela doit être utilisé avec parcimonie
Lisez cet article pour quelques pointeurs https://web.archive.org/web/20090301044015/http://blog.reindel.com/2006/08/11/a-hrefjavascriptvoid0-avoid-the-void
la source
Cette réponse doit être mise à jour pour refléter les nouvelles normes Web (HTML5).
Ce:
... est du HTML5 valide. L'attribut tabindex le rend focusable au clavier comme les hyperliens normaux. Vous pourriez aussi bien utiliser l'
span
élément pour cela comme mentionné précédemment, mais je trouve que l'utilisation de l'a
élément est plus élégante.Voir: https://w3c.github.io/html-reference/a.html
et: https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-href
la source
click
événement lorsque l'utilisateur concentre l'élément et appuie sur Entrée (testé dans Firefox 51).keydown
événement.Voici les trois façons dont
<a>
lahref
propriété tag de la balise ne renvoie à rien:la source
Je sais que c'est une vieille question, mais je pensais quand même ajouter mes deux cents:
Cela dépend de ce que le lien va faire, mais en général, je pointerais le lien vers une URL qui pourrait éventuellement afficher / faire la même chose, par exemple, si vous faites un petit message sur la boîte:
Puis avec jQuery
De cette façon, les très anciens navigateurs (ou les navigateurs avec JavaScript désactivé) peuvent toujours naviguer vers une page à propos distincte, mais plus important encore, Google la récupérera également et explorera le contenu de la page à propos.
la source
Assurez-vous que tous vos liens que vous souhaitez arrêter ont
href="#!"
(ou tout ce que vous voulez vraiment), puis utilisez ceci:la source
Vous pouvez avoir une ancre HTML (
a
balise) sanshref
attribut. Laissez l'href
attribut et il ne sera lié à rien:la source
La seule chose qui a fonctionné pour moi était une combinaison de ce qui précède:
D'abord le li dans l'ul
Ensuite, dans le LoadTab2_1, j'ai changé manuellement les onglets divs
En effet, la déconnexion du déconnecte également l'action dans les onglets
Vous devez également faire manuellement le style de l'onglet lorsque l'onglet principal change les choses
la source
Vous pouvez le faire en
la source
c'était ma balise d'ancrage. donc renvoyer false sur l'événement onClick = "" n'est pas utile ici. Je viens de supprimer la propriété href = "#" et cela a fonctionné pour moi comme ci-dessous
et j'avais besoin d'ajouter ce css.
la source
J'ai rencontré ce problème sur un site WordPress. Les en-têtes des menus déroulants avaient toujours l'attribut
href=""
et le plugin d'en-tête utilisé uniquement les URL standard autorisées. La solution la plus simple était juste d'exécuter ce code dans le pied de page:Cela empêchera les ancres vierges de faire quoi que ce soit.
la source
React ne prend plus en charge l'utilisation d'une fonction comme celle-ci
href="javascript:void(0)"
dans votre balise d'ancrage, mais voici quelque chose qui fonctionne plutôt bien.la source
Je sais que cela est étiqueté comme une question jQuery, mais vous pouvez également y répondre avec AngularJS.
dans votre élément, ajoutez la directive ng-click et utilisez la variable $ event qui est l'événement click ... évitez son comportement par défaut:
Vous pouvez même passer la variable $ event dans une fonction:
dans cette fonction, vous faites ce que vous voulez avec l'événement click.
la source