Quand dois-je utiliser return false dans la fonction jquery?

j'ai trouvé beaucoup de fonctions comme ceci:

$(function() {
    $("body a").click(function() {
        alert(this.innerHTML);
        return false;
    });
});

Quelle est la différence entre this et $(this) en jquery?

ils ont tous une ligne return false; - je ne sais pas quand je dois utiliser return false dans la fonction jquery et ne sais pas à quoi ça sert?

33
demandé sur Gras Double 2011-05-08 17:21:45

3 réponses

Selon jQuery Événements: Arrêt (Mis)à l'Aide de Return False (lien archivé), returning false exécute trois tâches lorsqu'il est appelé:

  1. événement.preventDefault ();
  2. événement.stopPropagation ();
  3. arrête l'exécution du callback et retourne immédiatement lorsqu'il est appelé.

La seule action nécessaire pour annuler le comportement par défaut est preventDefault(). Délivrance return false; peut créer du code fragile. Généralement vous voulez juste ceci:

$("a").on( 'click', function (e) {
    // e == our event data
    e.preventDefault();
});

et deuxièmement "ceci" est un élément DOM en javascript et "$(ceci) " est un élément jQuery qui fait référence à l'élément du DOM. Lire plus sur le sujet jQuery est ceci: demystified.

59
répondu gruntled 2017-05-01 14:14:45

vous cliquez sur une ancre, dont le comportement par défaut est de naviguer quelque part. Retourner false peut être une tentative d'empêcher la navigation et de garder l'utilisateur sur la page/vue actuelle.

9
répondu Kon 2011-05-08 13:23:47

Dans le champ d'application de la gestionnaire de clic, this est L'élément DOM déballé. $(this) enveloppements et renvoie un élément jQuery. Il est de pratique courante de l'envelopper une fois et de le rendre disponible dans la portée comme that souvent $this (préfixer les noms de variables avec $ est une convention pour indiquer un élément jQuery).

votre exemple pourrait donc être écrit comme

$(function() {
    $("body a").click(function() {
        var $this = $(this);
        alert($this.html());
        return false;
    });
});
2
répondu Rob Cowie 2011-05-08 13:30:00