我经常看到这样的代码:
$("#thing").on("mouseenter",function(){ Do stuff });
就个人而言,我几乎总是这样写:
$("#thing").mouseenter(function(){ Do stuff });
同样,我也经常写
$("#thing").click(function(){})
但我看到人们将其更正为(是的,我知道 on
在 v.1.7+ 中比 bind
更受欢迎,所以它本质上是相同的偏好问题):
$("#thing").bind("click",function(){})
我是不是做错了什么,这两个函数之间是否存在我没有看到的深层差异?它似乎总是按照我的意愿去做,所以这从来都不是一个实际问题,但我很想知道是否有我忽略的理论考虑。
最佳答案
不是真的,它只是快了一点,因为 mouseenter
函数调用 on
(或者 trigger
,如果不带参数调用),可以看到在源代码中:
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 contextmenu").split(" "), function( i, name ) {
// Handle event binding
jQuery.fn[ name ] = function( data, fn ) {
return arguments.length > 0 ?
this.on( name, null, data, fn ) :
this.trigger( name );
};
});
如您所见,对于许多事件来说也是如此。
就我个人而言,当我不需要on
的特殊功能时,我更喜欢使用mouseenter
(或click
等)功能> :在我看来,使用 jQuery 的一大优势是它使代码不那么冗长且更具可读性。而且我认为你不应该被纠正,问问那些纠正你的人他为什么这样做。
关于javascript - 使用 jQuery 的 $().on ('mouseenter' ,function(){}) 比 $().mouseenter(function(){}) 有优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16086785/