web-dev-qa-db-fra.com

jQuery: $ (). click (fn) vs $ (). bind ('click', fn);

Lors de l'utilisation de jQuery pour connecter un gestionnaire d'événements, y a-t-il une différence entre l'utilisation de la méthode click

$().click(fn)

par rapport à l'utilisation de la méthode de liaison

$().bind('click',fn);

Autre que le paramètre de données facultatif de bind.

114
Alan Storm

Pour ce que ça vaut, de la source jQuery :

jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
    "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
    "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){

    // Handle event binding
    jQuery.fn[name] = function(fn){
        return fn ? this.bind(name, fn) : this.trigger(name);
    };
});

Alors non, il n'y a pas de différence -

$().click(fn)

appels

$().bind('click',fn)
137
Matthew Maravillas

+1 pour la réponse de Matthew, mais j'ai pensé que je devrais mentionner que vous pouvez également lier plusieurs gestionnaires d'événements en une seule fois en utilisant bind

$('#myDiv').bind('mouseover focus', function() {
    $(this).addClass('focus')
});

qui est l'équivalent beaucoup plus propre de:

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;
97
nickf

Il existe une différence en ce que vous pouvez lier des événements personnalisés à l'aide du deuxième formulaire que vous avez. Sinon, ils semblent également être. Voir: Documents d'événement jQuery

7
nickohrn

Je trouve que le .click () est beaucoup plus logique, mais je suppose que c'est comme ça que vous pensez des choses.

$('#my_button').click(function() { alert('BOOM!'); });

Semble être aussi simple que possible.

1
JedH

Il existe le paramètre [data] de bind qui ne se produit qu'une seule fois au moment de la liaison.

Vous pouvez également spécifier des événements personnalisés comme premier paramètre de liaison.

1
aaron

Si vous avez Google Chrome, leurs outils de développement disposent d'un outil d'écoute d'événements, sélectionnez l'élément que vous souhaitez espionner son événement.

Vous constaterez que le fait d'essayer dans les deux sens conduit au même résultat, ils sont donc équivalents.

0
Omar Abid

Je préfère . Bind () en raison de la cohérence de son interface avec . Live (). Non seulement cela rend le code plus lisible, mais cela facilite la modification d'une ligne de code pour utiliser une méthode au lieu de l'autre.

0
danorton