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

IT技术 javascript jquery event-handling
2021-02-22 10:26:35

使用 jQuery 连接事件处理程序时,使用 click 方法有什么区别

$().click(fn)

与使用绑定方法

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

除了绑定的可选数据参数。

6个回答

对于它的value,来自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);
    };
});

所以不,没有区别——

$().click(fn)

电话

$().bind('click',fn)
他们做同样的事情,但是 bind() 让你说,我希望在使用悬停和点击等时发生一些事情。请参阅下面的stackoverflow.com/a/519455/292408示例。您当然可以只绑定到一个事件,例如“点击”。
2021-05-01 10:26:35
真正的-click()基本上是简写bind('click')(或者,在这一天的年龄,它实际上调用on('click')该方法,我看到它,用你还不如自己节省额外的函数调用。on('click')直接。
2021-05-16 10:26:35

+1 为 Matthew 的回答,但我想我应该提到您还可以使用一次绑定多个事件处理程序 bind

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

这是更清洁的等效于:

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;
+1 绑定多个事件对我来说是新闻,可能非常有用。
2021-04-23 10:26:35

一个区别在于您可以使用您拥有的第二种形式绑定自定义事件。否则,它们似乎是同义词。请参阅:jQuery 事件文档

bind 有一个 [data] 参数,它只会在绑定时发生一次。

您还可以将自定义事件指定为 bind 的第一个参数。

我发现 .click() 更合乎逻辑,但我想这就是你的想法。

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

看起来就像你得到的一样简单。