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



下面两个jQuery语句有什么不同:

1) with .bind

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

2) without .bind()

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

那么,当我需要使用它们中的一个时呢?

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

这个方法是.bind('click', handler)的快捷方式

您可以通过快速查看jQuery源代码来确认这一点:

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在处理自定义事件时也很有用。对于几乎任何其他事件,都有一个类似.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*/
});

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

不带参数调用.click().trigger('click'的快捷方式

这种形式没有区别。click方法只是bind('click', ...)的一个快捷方式。

这只是一个快捷方式。他们之间真的没有区别

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

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

使用。click()在IOS 4x的iPhone上使用Safari浏览器触摸锚点时不会触发该函数。bind('click')

相关内容

  • 没有找到相关文章