web-dev-qa-db-fra.com

Empêcher href d'ouvrir le lien mais toujours exécuter d'autres événements de liaison

Je veux empêcher les liens d'ouvrir des pages. Alors j'ai écrit ceci:

$("a").click(function(e) {
    e.preventDefault()
}

qui est genial! Mais cela bloque mon autre événement:

$(".toolbar a").click(function(e) {
    ...action...
}

Bien sûr, je peux ajouter mon action au premier événement avec un test, mais existe-t-il un moyen élégant d'empêcher l'exécution de l'événement only href?

MODIFIER

En fait, ça marche, désolé. Voir @ raina77ow violon travaillant ici: http://jsfiddle.net/HeFS6/

25
Benoit R

Utilisez return false à la place. Vous pouvez voir le code ci-dessous qui marche ici .

​$("a").click(function() {
    return false;
});

$(".toolbar a").click(function() {
    alert("Do something");
});​

Comme indiqué par @ raina77ow avec cet article , utiliser return false équivaut à appeler event.preventDefault() et également event.stopPropagation(). Comme j’ai eu des problèmes sans return false avec certains codes par le passé, je le suggère toujours.

Mais la chose la plus importante ici est l'ordre de liaison: votre dernière liaison sera votre premier code exécuté. Alors, prenez-en soin et partez.

29
Erick Petrucelli

Au lieu de e.preventDefault(), avez-vous essayé return false? Cela devrait également empêcher le comportement par défaut du navigateur.

1
Matt C

Il n'y a pas d'événement href. C’est ce que vous obtiendriez si empêchaient d’être défectueux au clic. Vous devriez juste utiliser des sélecteurs plus spécifiques.

0
Hazem Salama