256 votes

Comment empêcher un clic sur un lien « # » de sauter en haut de la page ?

J'utilise actuellement les balises <a> avec jQuery pour lancer des choses comme des événements de clic, etc.

Exemple : <a href="#" class="someclass">Text</a>

Mais je déteste comment le '#' fait sauter la page en haut de la page. Que puis-je faire à la place ?

352voto

Chris Points 39

Donc c'est vieux mais... juste au cas où quelqu'un trouverait ça dans une recherche.

Il suffit d'utiliser "#/" au lieu de "#" et la page ne sautera pas.

269voto

BoltClock Points 249668

Dans jQuery, lorsque vous gérez l'événement de clic, retournez false pour empêcher le lien de répondre de la manière habituelle. Empêchez l'action par défaut, qui consiste à visiter l'attribut href, d'avoir lieu (selon le commentaire de PoweRoy et la réponse d'Erik) :

$('a.someclass').click(function(e)
{
    // Special stuff to do when this link is clicked...

    // Cancel the default action
    e.preventDefault();
});

68voto

guy schaller Points 1762

vous pouvez même l'écrire comme ceci :

<a href="javascript:void(0);"></a>

je ne suis pas sûr que ce soit une meilleure façon mais c'est une façon :)

52voto

Nabi K.A.Z. Points 311

Solution n °1 : (simple)

<a href="#!" class="someclass">Text</a>

Solution n °2 : (nécessaire javascript)

<a href="javascript:void(0);" class="someclass">Text</a>

Solution n °3 : (nécessaire jQuery)

<a href="#" class="someclass">Text</a>
<script>
$('a.someclass').click(function(e) {
    e.preventDefault();
});
</script>

16voto

Erik Töyrä Points 4303

Vous pouvez utiliser event.preventDefault() pour éviter cela. Pour en savoir plus : http://api.jquery.com/event.preventDefault/.

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