La valeur de retour d'un gestionnaire d'événements détermine si oui ou non le comportement par défaut du navigateur devrait avoir lieu aussi bien. Dans le cas de cliquer sur des liens, ce serait suivre le lien, mais la différence est plus visible dans les gestionnaires de soumission de formulaire, où vous pouvez annuler une soumission de formulaire si l'utilisateur a fait une erreur en entrant l'information.
Je ne crois pas qu'il existe une spécification W3C pour cela. Toutes les anciennes interfaces JavaScript comme celle-ci ont reçu le surnom "DOM 0" et sont pour la plupart non spécifiées. Vous pouvez avoir de la chance en lisant la vieille documentation de Netscape 2.
La manière moderne de réaliser cet effet est d'appeler event.preventDefault()
, et ceci est spécifié dans le DOM 2 Events specification.
Ainsi, la bonne façon serait:
$('.dialogLink')
.click(function (e) {
dialog(this);
e.preventDefault();
e.stopPropagation(); // Stop bubbling up
});
Serait-ce la même chose si je codais dans ces deux événements dans la fonction de dialogue? – Alan2
Ces deux lignes ne sont pas des événements, ce sont des appels aux méthodes de l'objet 'event' que vous remarquerez avoir ajouté en tant que paramètre à la fonction. jQuery définit ce paramètre sur l'objet 'event' associé à l'événement qui s'est produit.Si vous avez passé l'objet 'event' à la fonction' dialog() ', alors il pourrait appeler ces méthodes, mais je pense que c'est beaucoup plus facile à maintenir si vous le faites directement là où je l'ai montré. Cela dit, je vous recommande de rester avec le 'return false' que vous avez déjà: c'est plus court. – nnnnnn
En tant que quelqu'un qui vient de rencontrer ce problème et qui a pris un peu de temps pour comprendre ce qui se passait, je dirais que l'appel 'return false' n'est pas aussi clair que de dire preventDefault et stopPropagation. – aug