J'utilise jQuery, je dois faire en sorte que certaines balises d'ancrage n'effectuent aucune action.
Je l'écris généralement comme ça :
<a href="#">link</a>
Cependant, il s'agit du haut de la page !
J'utilise jQuery, je dois faire en sorte que certaines balises d'ancrage n'effectuent aucune action.
Je l'écris généralement comme ça :
<a href="#">link</a>
Cependant, il s'agit du haut de la page !
Il existe quelques solutions moins que parfaites :
1. Lien vers une fausse ancre
<a href="#">
Problème : en cliquant sur le lien, on revient en haut de la page.
2. Utiliser une balise autre que "a".
Utilisez une balise span et utilisez le jquery pour gérer le clic.
Problème : la navigation au clavier est interrompue et il faut changer manuellement le curseur de survol.
3. Lien vers une fonction javascript void
<a href="javascript:void(0);">
<a href="javascript:;">
Problème : rupture lors de la liaison d'images dans IE
Solución
Comme toutes ces méthodes ont leurs problèmes, la solution que j'ai retenue consiste à créer un lien vers une fausse ancre, puis à renvoyer false à partir de la méthode onClick :
<a href="#" onClick="return false;">
Ce n'est pas la solution la plus concise, mais elle résout tous les problèmes posés par les méthodes ci-dessus.
J'utilise généralement l'approche javascript:void(0) ;, car l'utilisation de # affiche l'URL actuelle dans la barre de Firefox au passage de la souris, ce qui peut être trompeur pour l'utilisateur.
@eugene cette question date de 3 ans maintenant, mais IE avait l'habitude de faire disparaître les images lorsqu'elles étaient entourées d'un lien vers une fonction void. Je ne sais pas quand cela a été corrigé, mais cela fonctionne dans IE10, qui est tout ce que j'ai installé. Personnellement, j'utilise maintenant <a href="javascript:;">
Si vous ne voulez pas qu'il pointe vers quoi que ce soit, vous ne devriez probablement pas utiliser l'attribut <a>
(ancre) tag.
Si vous voulez que quelque chose ressemble à un lien mais ne se comporte pas comme un lien, il est préférable d'utiliser l'élément approprié (comme l'élément <span>
), puis de le styliser à l'aide de CSS :
<span class="fake-link" id="fake-link-1">Am I a link?</span>
.fake-link {
color: blue;
text-decoration: underline;
cursor: pointer;
}
En outre, étant donné que vous avez étiqueté cette question "jQuery", je suppose que vous voulez joindre un gestionnaire d'événement de clic. Dans ce cas, il suffit de faire la même chose que ci-dessus et d'utiliser quelque chose comme le JavaScript suivant :
$('#fake-link-1').click(function() {
/* put your code here */
});
Notez que (comme Iraimbilanja le souligne) l'approche span ici désactive la possibilité d'invoquer la fonction en utilisant le clavier, ce que je considérerais comme un problème d'utilisabilité.
C'est aussi un problème d'accessibilité. Vous pouvez le résoudre en utilisant un élément de type bouton (généré à partir de JavaScript afin que les utilisateurs qui n'utilisent pas JavaScript n'obtiennent pas un contrôle défectueux).
La bonne façon de procéder est de "rompre" le lien avec jQuery lorsque vous manipulez le lien.
HTML
<a href="#" id="theLink">My Link</a>
JS
$('#theLink').click(function(ev){
// do whatever you want here
ev.preventDefault();
ev.stopPropagation();
});
Ces deux derniers appels empêchent le navigateur d'interpréter le clic.
Bien que cela semble être "correct" parce que 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 les clics sur les liens via jQuery.
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.
0 votes
Parce que jquery gérera l'événement de clic et je veux que le lien soit comme un lien achor mais se comporte comme une fonction JavaScript.
0 votes
Doublure efficace : stackoverflow.com/questions/265478/preventdefault-on-an-a-tag
1 votes
Comme mentionné dans l'une des réponses ci-dessous : si vous ne voulez pas qu'un lien pointe vers une ressource, n'utilisez pas l'élément A.
1 votes
N'utilisez pas le
href
à l'intérieur.0 votes
Duplicata possible de Attribut Href pour les liens JavaScript : "#" ou "javascript:void(0)" ?
0 votes
N'ajoutez pas d'attribut "href".