在$().mouseenter(function(){})上使用jQuery的$().on('mouseenter',function(){})是否有优势?

Jas*_*ols 3 javascript jquery

我经常看到如下代码:

$("#thing").on("mouseenter",function(){ Do stuff });
Run Code Online (Sandbox Code Playgroud)

就个人而言,我几乎总是这样写:

$("#thing").mouseenter(function(){ Do stuff });
Run Code Online (Sandbox Code Playgroud)

同样,我经常写

$("#thing").click(function(){})
Run Code Online (Sandbox Code Playgroud)

但我已经看到人们纠正它(是的,我知道在1.7加on以上bind时更受欢迎,所以它基本上是相同的偏好问题):

$("#thing").bind("click",function(){}) 
Run Code Online (Sandbox Code Playgroud)

我做了一些"错误"的事情,我看不到这两个功能之间有很大差异吗?它总是似乎做我想做的事情,所以它从来不是一个实际问题,但我有兴趣知道是否有一个我忽略的理论考虑.

Den*_*ret 7

不是真的,它在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 );
    };
});
Run Code Online (Sandbox Code Playgroud)

如您所见,许多事件都可以这样说.

就个人而言,当我不需要特殊功能时,我更喜欢使用mouseenter(或click等)函数on:我认为使用jQuery的一大优点是它使代码更简洁,更易读.我不认为你应该纠正,问那些纠正你为什么这样做的人.