Comment puis-je créer une ancre HTML vide afin que la page ne «pousse pas» lorsque je clique dessus?

Je travaille sur certains JQuery pour cacher / afficher du contenu 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 pendant que je suis déroulé sur une page, il reviendra en haut de la page.

Si je fais quelque chose comme:

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

La page va recharger, ce qui réduit la page de tous les changements que javascript a effectués.

Quelque chose comme ça:

 <a onclick="jquery_stuff" /> 

Je vais me donner l'effet désiré, mais il ne s'affiche plus comme un lien. Existe-t-il un moyen de spécifier une ancre vide afin que je puisse assigner un gestionnaire javascript à l'événement onclick , sans changer quoi que ce soit sur la page ou déplacer la barre de défilement?

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

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

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.

Vous pouvez placer simplement comme ci-dessous:

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

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

Voici leur exemple:

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

Vous pouvez également créer le lien comme ceci:

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

Vérifiez le commentaire de la paupière sans douleur (utilisez un bouton, pas une ancre). J'étais sur le point de publier les mêmes conseils. Une ancre qui ne relie pas une ressource et qui exécute simplement un script doit être implémentée comme un bouton.

Arrêtez de mettre vos gestionnaires d'événements en HTML et arrêtez d'utiliser des balises d'ancrage qui ne servent pas à la sémantique. Utilisez un bouton et ajoutez le gestionnaire de clics dans votre Javascript. Exemple: HTML <button id="jquery_stuff">Label</button> et JavaScript $('#jquery_stuff').click(jquery_stuff); . Vous pouvez utiliser CSS pour modifier le bouton pour ressembler à un lien, en supprimant le rembourrage, les bordures, la marge et la couleur d'arrière-plan, puis en ajoutant vos styles de lien (par exemple, la couleur et la décoration de texte). – Eyelidlessness Oct 19 '10 à 17:40

 <a href="javascript:;" onclick="jquery">link</a> 

href nécessite quelque chose là-dedans si vous voulez qu'il ne présente pas d'erreurs dans les validateurs pour html. Le javascript:; Est un bon détenteur de place.

Si vous souhaitez vraiment utiliser le # :

 <a href="#me" name="me" onclick="jquery">link</a> 

Faites attention avec le return false; , Il arrête les comportements par défaut de ce que vous faites.

Aussi, si votre js est comme un soumission, vous pouvez rencontrer des problèmes dans Internet Explorer.

 <a href="javascript:// some helpful comment " onclick="jquery_stuff" /> 

J'utilise habituellement un <span> et je le considère comme un lien lorsque je dois accomplir quelque chose comme ça.

  <a href="#" class="falseLinks">Link1</a> <a href="#" class="falseLinks">Link2</a> 

etc..

JQUERY:

  $(function() { $("a.falseLinks").click(function() { // ...other stuff you want to do when links is clicked // This is the same as putting onclick="return false;" in HTML return false; }) }); 

L'innocence était un peu douloureuse dans la manière dont il l'a dit, mais il avait raison. C'est le moyen le plus propre à le faire. Pourquoi utiliser jQuery si vous allez revenir à vanilla Javascript pour tout ce que jQuery fait plus facile et plus propre?

Habituellement, je le fais

 <a style="cursor:pointer;" onclick="whatever();">Whatever</a> 

Que dis-tu de ça:

 <a href="#nogo" onclick="foo();">some text</a>