Ao usar jQuery para conectar um manipulador de eventos, há alguma diferença entre usar o método click
$().click(fn)
versus usar o método de ligação
$().bind('click',fn);
Diferente do parâmetro de dados opcional de bind.
Ao usar jQuery para conectar um manipulador de eventos, há alguma diferença entre usar o método click
$().click(fn)
versus usar o método de ligação
$().bind('click',fn);
Diferente do parâmetro de dados opcional de bind.
Respostas:
Por que vale a pena, da fonte 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);
};
});
Então não, não há diferença -
$().click(fn)
chamadas
$().bind('click',fn)
click()
é basicamente uma abreviação para bind('click')
(ou, nos dias de hoje, ele realmente chama on('click')
. A meu ver, você também pode economizar aquela chamada de função extra usando on('click')
diretamente.
+1 para a resposta de Matthew, mas acho que deveria mencionar que você também pode vincular mais de um manipulador de eventos de uma vez usando bind
$('#myDiv').bind('mouseover focus', function() {
$(this).addClass('focus')
});
que é muito mais limpo equivalente a:
var myFunc = function() {
$(this).addClass('focus');
};
$('#myDiv')
.mouseover(myFunc)
.focus(myFunc)
;
Há uma diferença em que você pode vincular eventos personalizados usando o segundo formulário que você tem. Caso contrário, eles parecem ser sinônimos. Veja: jQuery Event Docs