preventDefault () ne fonctionne pas
Lorsque j'utilise de l'événement.preventDefault() sur un lien, il fonctionne, mais quand je l'utilise sur un bouton qui ne fait pas!
DÉMO
mon code:
<a id="link" href="http://www.google.com">link</a>
<button id="button" onclick="alert('an alert')">button</button>
$('#link').click(function(event){
event.preventDefault();
});
$('#button').click(function(event){
event.preventDefault();
});
Lien de l'action est annulée, mais quand je clique sur le bouton, encore exécute l'action onClick
Toute aide? ce que je veux faire est d'empêcher le bouton de action onClick sans changer le bouton html (je ne sais comment faire
$('#button').removeAttr('onclick');
source d'informationauteur ilyes kooli
Vous devez vous connecter pour publier un commentaire.
Vous voulez
event.stopImmediatePropagation();
s'il existe plusieurs gestionnaires d'événement sur un élément et que vous souhaitez empêcher les autres de s'exécuter.preventDefault()
à quelques blocs de l'action par défaut (comme l'envoi d'un formulaire ou de naviguer vers une autre URL) alors questopImmediatePropagation()
empêche l'évènement de remonter l'arborescence DOM et empêche les autres gestionnaires d'événements sur le même élément d'être exécutée.Voici quelques liens utiles expliquant les différentes méthodes:
Cependant, depuis il ne fonctionne toujours pas, cela signifie que le
onclick=""
gestionnaire d'exécution avant l'attaché de gestionnaire d'événements. Il n'y a rien que vous pouvez faire depuis quand votre code s'exécute leonclick
code a déjà été exécutée.La solution la plus simple est d'enlever complètement de ce gestionnaire:
Même ajouter un écouteur d'événement via la plaine de javascript (
addEventListener()
) avecuseCapture=true
n'aide pas - apparemment inline événements de déclenchement avant même que l'événement commence à descendre l'arborescence DOM.Si vous ne souhaitez pas supprimer le gestionnaire parce que vous en avez besoin, il suffit de le convertir à un événement attaché:
vous avez besoin
stopImmediatePropagation
paspreventDefault
. preventDefault empêche comportement par défaut du navigateur, pas de méthode de bulles.http://api.jquery.com/event.stopImmediatePropagation/
http://api.jquery.com/event.preventDefault/
La
preventDefault
fonction n'arrête pas de gestionnaires d'événement de déclenchement, mais plutôt arrête l'action par défaut. Pour les liens, il s'arrête à la navigation, pour les boutons, il arrête le formulaire de soumission, etc.Ce que vous cherchez est
stopImmediatePropagation
.vous pouvez essayer ceci:
DÉMO