Question

J'ai le code suivant qui est censé empêcher quoi que ce soit de se produire lorsque vous cliquez sur un lien, à l'exception du déclenchement et de l'alerte.La destination du lien est annulée, mais cliquer sur le lien vous fait défiler vers le haut de la page.Comment puis-je arrêter ce comportement ?Merci

$('a#target').click(function(event){
    event.preventDefault();
    alert('End of demo');
});

MISE À JOUR, mon lien ressemble à ceci :

<a href="#">Submit</a>
Était-ce utile?

La solution

Non, PreventDefault n'est pas censé arrêter quoi que ce soit, il est censé faire exactement ce qu'il dit : empêcher l'action par défaut.c'est à dire.Si vous cliquez sur un lien avec un href, cela empêchera l'action par défaut du navigateur qui consiste à accéder à ce lien.

Si vous souhaitez arrêter tous les autres événements attachés à ce lien, vous devez renvoyer false à la fin du gestionnaire d'événements ET vous assurer que ce gestionnaire d'événements est exécuté avant tous les autres.

MISE À JOUR:

Merci d'avoir publié le lien et la valeur href.Je parie que ce qui se passe, c'est que JavaScript rencontre une erreur avant que ce gestionnaire de clics puisse être renvoyé.Comme l'indique correctement le premier commentaire sur cette réponse, PreventDefault devrait également empêcher le lien de sauter vers les ancres de la page.Si ce n'est pas le cas, c'est probablement parce qu'il y a une erreur JavaScript ailleurs sur la page.

Tout cela étant dit, êtes-vous sûr d'avoir posté le bon code HTML ?

$('a#target').click(...

Attaché un gestionnaire de clics à un lien qui ressemble à ceci :

<a href="#" id="target">Submit</a>

Et une dernière réflexion : si un élément d'ancrage n'est associé qu'à des actions via JavaScript, alors pourquoi spécifier l'attribut option href ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top