下面两个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', ...)
的一个快捷方式。
这只是一个快捷方式。他们之间真的没有区别
http://api.jquery.com/click/这个方法是前两个变体中的.bind('click', handler)和第三个变体中的.trigger('click')的快捷方式。
使用。click()在IOS 4x的iPhone上使用Safari浏览器触摸锚点时不会触发该函数。bind('click')