jQuery中以下两个语句之间有什么不同:
1).bind
$("#username").bind('click',function(){
//@todo
});
2)没有.bind()
$("#username").click(function(){
//@todo
});
那么,当我需要使用其中一个?
答案 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')。
答案 4 :(得分:0)
使用.click()在使用IOS 4x的iPhone中使用Safari浏览器触摸锚点时不会触发该功能。它与bind('click')
有关