使用jQuery连接事件处理程序时,使用click方法
之间是否有任何区别$().click(fn)
与使用绑定方法相比
$().bind('click',fn);
除了bind的可选数据参数。
答案 0 :(得分:137)
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);
};
});
所以不,没有区别 -
$().click(fn)
呼叫
$().bind('click',fn)
答案 1 :(得分:96)
为Matthew的回答+1,但我想我应该提一下,你也可以使用bind
$('#myDiv').bind('mouseover focus', function() {
$(this).addClass('focus')
});
相当于:
var myFunc = function() {
$(this).addClass('focus');
};
$('#myDiv')
.mouseover(myFunc)
.focus(myFunc)
;
答案 2 :(得分:7)
有一个区别在于您可以使用您拥有的第二个表单绑定自定义事件。否则,它们似乎是同义词。请参阅:jQuery Event Docs
答案 3 :(得分:1)
绑定的[data]参数只会在绑定时发生一次。
您还可以将自定义事件指定为bind的第一个参数。
答案 4 :(得分:1)
我发现.click()更合乎逻辑,但我猜你是这么想的。
$('#my_button').click(function() { alert('BOOM!'); });
似乎和你一样简单。
答案 5 :(得分:0)
如果你有谷歌浏览器,他们的开发人员工具有一个事件监听器工具,选择你要监视其'事件的元素。
您会发现尝试两种方式会产生相同的结果,因此它们是等效的。
答案 6 :(得分:0)
我更喜欢 .bind(),因为它与 .live()的界面一致。它不仅使代码更具可读性,而且更容易更改一行代码而不是另一种方法。