jQuery中.bind('click')和.click()有什么区别?

时间:2011-09-19 16:28:25

标签: javascript jquery event-handling

jQuery中以下两个语句之间有什么不同:

1).bind

$("#username").bind('click',function(){
    //@todo
});

2)没有.bind()

$("#username").click(function(){
    //@todo
});    

那么,当我需要使用其中一个?

5 个答案:

答案 0 :(得分:23)

没有区别。如果您阅读.click的文档,您会注意到以下行:

  

此方法是.bind('click',handler)

的快捷方式

您可以快速查看jQuery source

来确认这一点
function (data, fn) {
    if (fn == null) {
        fn = data;
        data = null;
    }
    //Notice the call to bind on the following line...
    return arguments.length > 0 ? this.bind(name, data, fn) : this.trigger(name);
}

我倾向于使用.click而不是.bind,因为它写得更快。但是,.bind可用于将同一个侦听器附加到多个事件,因此在这种情况下它很有用:

$("#something").bind("click mouseover", function() {
    //Do stuff
});

要扩展@Tomalak的评论,.bind在处理自定义事件时也很有用。对于几乎任何其他事件,shortcut method就像.click一样。 jQuery源代码如下:

jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
    "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
    "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
    /*Call .bind for the respective event. There is a shortcut method 
    for each of the events listed above*/
});

答案 1 :(得分:3)

没有区别,.click.bind('click',的快捷方式。

不带参数调用的

.click().trigger('click'的快捷方式。

答案 2 :(得分:2)

这种形式没有区别。 click方法只是bind('click', ...)的快捷方式。使用哪个纯粹是偏好/风格的问题

答案 3 :(得分:0)

这只是一条捷径。他们之间真的没什么区别

  

此方法是前两个变体中.bind('click',handler)的快捷方式,第三个变种中是.trigger('click')。

http://api.jquery.com/click/

答案 4 :(得分:0)

使用.click()在使用IOS 4x的iPhone中使用Safari浏览器触摸锚点时不会触发该功能。它与bind('click')

有关