de l'événement.preventDefault() vs return false

Lorsque je veux éviter d'autres gestionnaires d'événements de l'exécution après un certain événement est déclenché, je peux utiliser l'une des deux techniques. Je vais utiliser jQuery dans les exemples, mais cela s'applique à la plaine-JS ainsi:

1. event.preventDefault()

$('a').click(function (e) {
    //custom handling here
    e.preventDefault();
});

2. return false

$('a').click(function () {
    //custom handling here
    return false;
});

Est-il une différence significative entre ces deux méthodes pour arrêter la propagation de l'évènement?

Pour moi, return false; est plus simple, plus court et probablement moins enclins à faire des erreurs que l'exécution d'une méthode. Avec la méthode, vous devez vous rappeler de corriger les caissons, les parenthèses, etc.

Aussi, je dois définir le premier paramètre de rappel pour être en mesure d'appeler la méthode. Peut-être, il y a quelques raisons pourquoi je devrais éviter de faire comme ceci et l'utilisation preventDefault à la place? Quelle est la meilleure façon de faire?

  • Notez que jQuery preventDefault n'empêche pas les autres gauchers de l'exécution. C'est ce que stopImmediatePropagation est pour.
  • elle empêche les autres (par la suite) pour les gestionnaires de l'exécution de... sur le nœud DOM l'événement est déclenché sur. Il n'a tout simplement pas éviter la propagation.
  • Ce ne sont pas des "deux méthodes pour arrêter la propagation de l'évènement?" e.preventDefault(); empêche l'action par défaut, il n'arrête pas la propagation de l'évènement, qui est fait par l'e.stopPropagation().
  • Cette question et ses réponses sont sur jQuery. Si vous êtes venu ici à la recherche pour un simple javascript réponse, voir event.preventDefault() vs return false (pas de jQuery)
  • jQuery est utilisé dans la question uniquement à simplifier les exemples de code. Si vous réécrivez les sélecteurs jQuery à la plaine-code JS, vous vous retrouverez avec le même problème et c'est la raison qui rend votre question, un double.
  • Cette réponse a un tableau expliquant tout stackoverflow.com/a/5302939/759452
  • Cela ne s'applique pas à la plaine de JS. Tas de bs.
  • vous devez prendre en compte differentation vanille entre js et jquery

InformationsquelleAutor RaYell | 2009-08-31