61 votes

Comment créer une ancre HTML vide afin que la page ne "saute pas" lorsque je la clique?

Je travaille sur quelques JQuery pour afficher/masquer certains contenus lorsque je clique sur un lien. Je peux créer quelque chose comme:

<a href="#" onclick="jquery_stuff" />

Mais si je clique sur ce lien alors que je suis défile vers le bas sur une page, il revient à la partie supérieure de la page.

Si je fais quelque chose comme:

<a href="" onclick="jquery_stuff" />

La page se rechargera, qui se débarrasse de la page de tous les changements que javascript a fait.

Quelque chose comme ceci:

<a onclick="jquery_stuff" />

Va me donner l'effet souhaité, mais il ne s'affiche plus comme un lien. Est-il un moyen de spécifier un vide d'ancrage afin que je puisse attribuer un javascript gestionnaire à l' onclick événement, sans changer quoi que ce soit sur la page ou en déplaçant la barre de défilement?

79voto

Otávio Décio Points 44200

Mettez un "retour faux"; sur la deuxième option:

 <a href="" onclick="jquery_stuff; return false;" />
 

24voto

Greg Points 132247

Vous devez return false; après le jquery_stuff :

 <a href="no-javascript.html" onclick="jquery_stuff(); return false;" />
 

Cela annulera l'action par défaut.

24voto

Vous pouvez mettre simplement comme ci-dessous:

 <a href="javascript:;" onclick="jquery_stuff">
 

19voto

nates Points 1227

jQuery a une fonction intégrée pour cela appelée preventDefault qui peut être trouvée ici: http://api.jquery.com/event.preventDefault/

Voici leur exemple:

 <script>
$("a").click(function(event) {
    event.preventDefault();
});
</script>
 

Vous pouvez également construire le lien comme ceci:

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

6voto

Chris Points 49

Vérifier eyelidlessness' commentaire (utilisation d'un bouton, pas un point d'ancrage). Était sur le point de poster le même avis. Un point d'ancrage qui ne permet pas d'accéder à une ressource et simplement exécute un script doit être mis en œuvre comme un bouton.

Arrêter de mettre vos gestionnaires d'événements dans le HTML, et cesser d'utiliser des balises d'ancrage qui ne servent d'ancrage sémantique fins. Utiliser un bouton et ajoutez le cliquez sur gestionnaire dans votre Javascript. Exemple: HTML <button id="jquery_stuff">Label</button> et JavaScript $('#jquery_stuff').click(jquery_stuff);. Vous pouvez utiliser CSS pour le style touche pour ressembler à un lien, par la suppression de rembourrage, de frontières, de marge et de couleur d'arrière-plan, puis d'ajouter votre lien de styles (eg. la couleur et la text-decoration). – eyelidlessness Oct 19 '10 à 17:40

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