114 votes

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

Lorsque l'on utilise jQuery pour connecter un gestionnaire d'événements, y a-t-il une différence entre l'utilisation de la méthode "click" et celle 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.

137voto

Matthew Maravillas Points 2469

Pour ce que ça vaut, du 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);
    };
});

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

$().click(fn)

appelle

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

97voto

nickf Points 185423

+1 pour la réponse de Matthew, mais j'ai pensé que je devrais mentionner que vous pouvez également lier plus d'un gestionnaire d'événement 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)
;

7voto

nickohrn Points 1930

La différence réside dans le fait que vous pouvez lier des événements personnalisés en utilisant le deuxième formulaire que vous avez. Sinon, ils semblent être synonymes. Voir : Docs sur les événements jQuery

1voto

aaron Points 11

Il y a le paramètre [data] de bind qui ne se produira qu'au moment de bind, une fois.

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

1voto

JedH Points 63

Je trouve que le .click() est beaucoup plus logique, mais je suppose que c'est la façon dont on voit les choses.

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

Il semble que ce soit aussi simple que possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X