jQuery hyperliens href valeur?
Sur mon site j'utilise jQuery pour accrocher les événements d'éléments, à savoir les liens hypertexte. Comme ces liens uniquement à effectuer des actions sur la page en cours, et ne conduisent nulle part, j'ai été mettre un attribut href de "#", dans:
<a href="#">My Link</a>
Cependant dans certains navigateurs, ce qui provoque la page pour faire défiler de haut, qui est de toute évidence le comportement indésirable. J'ai essayé à l'aide d'un vide href valeur, incluant ou non un, mais ensuite la souris ne permet pas de changer le curseur en forme de main sur le curseur.
Que dois-je mettre dedans?
- Suffit d'utiliser les CSS pour obtenir le hover curseur en forme de main: un {curseur:pointeur} et vous aurez la main sur tous les liens, peu importe.
- Où sont les pseudo-liens-vous de prendre? Êtes-vous de faire défiler la page, ou allez-vous à d'autres ancres?
Vous devez vous connecter pour publier un commentaire.
Ensuite, vous pouvez mettre dans chaque
href
ce que vous voulez et jQuery qui va déclencher l'preventDefault()
méthode et vous ne serez pas redirigé vers ce lieu.return false;
?return false
sur les événements pour éviter que le navigateur par défaut de l'action et de la remontée d'événements non-jQuery?href="javascript:void(null)"
ethref="#"
sont deux de mauvaises solutions, parce qu'ils ne se dégradera pas pour les non-JavaScript expériences.Ces "ancre" qui existent uniquement pour fournir un événement de clic, mais ne sont pas réellement des liens vers d'autres contenus, faut vraiment être bouton éléments parce que c'est ce qu'ils sont vraiment.
Il peut être appelée de la sorte:
Et bien sûr, cliquez sur événements peuvent être attachés à des boutons sans se soucier de la navigateur de sauter vers le haut, et sans ajout superflu de javascript comme onclick="return false;" ou d'un événement.preventDefault() .
Vous devriez vraiment mettre un lien réel existe. Je ne veux pas sonner comme un pédant, mais c'est une assez mauvaise habitude à prendre. JQuery et Ajax doit toujours être la dernière chose que vous mettre en œuvre. Si vous avez un lien qui ne va pas-où, vous n'êtes pas en train de faire.
Je ne suis pas casse tes couilles, je veux dire qu'avec toutes les bonnes intentions.
Pourquoi utiliser un
<a href>
? - Je le résoudre comme ceci:<span class='a'>fake link</span>
Et de style avec:
.a {text-decoration:underline; cursor:pointer;}
Vous pouvez facilement y accéder avec jQuery:
$(".a").click();
<a>
) n'est pas appropriée (comme gargantuesque dit). Un<button>
est la plus appropriée de l'élément (comme talentedmrjones dit).Ajouter return false à la fin de votre gestionnaire de clic, ce qui empêche le navigateur par défaut du gestionnaire de fortunes qui tente de rediriger la page:
à l'aide de jquery, vous voudrez peut-être seulement pour ceux avec un '#'
si vous utilisez le plus récent jquery (1.3.x), il n'y a pas besoin de se lier à nouveau quand les changements de page:
vous devriez utiliser
<a href="javascript:void(0)" ></a>
au lieu de
<a href="#" ></a>
<a href="javascript:void(0);" ></a>
Me demande pourquoi personne n'a dit ici plus haut: prévenir
<a href="#">
de défilement du document de position vers le haut, il suffit d'utiliser<a href="#/">
à la place. C'est simple HTML, pas de JQuery nécessaire. À l'aide deevent.preventDefault();
est juste trop!Je sais c'est vieux mais wow, il y a une solution facile.
supprimer le "href" totalement et il suffit d'ajouter une classe qui effectue les opérations suivantes:
Et c'est tout!
Je presque eu ce problème et c'était très tromper. Je suis en fournissant une réponse au cas où quelqu'un s'enroule dans ma position même.
Espère que cela aide la personne coincé avec des sauts!!
Au lieu de cela, vous pouvez tout simplement avoir le href, comme ci-dessous:
Il ne sera pas de défilement vers le haut.