J'ai du HTML et du jQuery qui glisse de div
haut en bas pour l'afficher ou le masquer lorsqu'un lien est cliqué:
<ul class="product-info">
<li>
<a href="#">YOU CLICK THIS TO SHOW/HIDE</a>
<div class="toggle">
<p>CONTENT TO SHOW/HIDE</p>
</div>
</li>
</ul>
$('div.toggle').hide();
$('ul.product-info li a').click(function(event){
$(this).next('div').slideToggle(200);
}
Ma question est la suivante: comment puis-je utiliser preventDefault()
pour empêcher le lien d'agir comme un lien et d'ajouter "#" à la fin de mon URL et de sauter en haut de la page?
Je n'arrive pas à trouver la bonne syntaxe, je reçois juste une erreur disant
preventDefault () n'est pas une fonction.
javascript
jquery
Chris J Allen
la source
la source
href
attribut @KLVTZ de la balise d'ancrage (a
) peut ne pas être vide ... Mais nous pouvons le définir surjavascript:<code-here>
, c'est légal / valide. Nous entrons ensuite pour<code-here>
juste une instruction vide en ajoutant un point-virgule. De cette façon, le lien ne fait rien.Il est suggéré de ne pas utiliser
return false
, car 3 choses se produisent en conséquence:Donc dans ce type de situation, vous ne devriez vraiment utiliser que
event.preventDefault();
Archive de l'article - Événements jQuery: Arrêtez (Mis) en utilisant Return False
la source
Sinon, vous pouvez simplement renvoyer false à partir de l'événement de clic:
Ce qui arrêterait le déclenchement de l'A-Href.
Notez cependant, pour des raisons de convivialité, dans un monde idéal que href devrait encore aller quelque part, pour les personnes qui veulent ouvrir le lien dans un nouvel onglet;)
la source
C'est une solution non-JQuery que je viens de tester et cela fonctionne.
la source
Utilisation
la source
href="javascript:// Send Email"
Une autre façon de le faire en utilisant Javascript
inline onclick
,IIFE
,event
etpreventDefault()
:la source
<a href='#' onclick="event.preventDefault()">Click Me</a>
après plusieurs opérations, lorsque la page doit enfin aller au lien, vous pouvez faire ce qui suit:
la source
preventDefault
, puis effectuer vous-même l'action par défaut? Faites simplement ce que vous devez ajouter et laissez la valeur par défaut avoir lieu.Pourquoi ne pas le faire simplement en CSS?
Supprimez l'attribut "href" dans votre balise d'ancrage
Dans votre css,
la source
Si l'arrêt de la propagation de l'événement ne vous dérange pas, utilisez simplement
à la fin de votre gestionnaire. Dans jQuery, cela empêche le comportement par défaut et arrête la propagation de l'événement.
la source
Vous pouvez utiliser
return false;
l'appel d'événement pour arrêter la propagation de l'événement, il agit comme uneevent.preventDefault();
annulation. Ou vous pouvez utiliser l'javascript:void(0)
attribut in href pour évaluer l'expression donnée, puis revenirundefined
à l'élément.Renvoyer l'événement lorsqu'il est appelé:
Cas nul:
Pour en savoir plus, consultez: Quel est l'effet de l'ajout de void (0) pour href et de 'return false' sur l'écouteur d'événement de clic de la balise d'ancrage?
la source