Events 扩展本机focus()事件以运行检查,但仅当未传递匿名函数时

Events 扩展本机focus()事件以运行检查,但仅当未传递匿名函数时,events,javascript-events,jquery,modernizr,Events,Javascript Events,Jquery,Modernizr,在一个有多个focus()事件分布在十几个js文件中的站点上工作,这些文件都处理为页面上的第一个文本输入提供焦点(即:在登录页面上,电子邮件字段自动提供焦点)。我想对所有触摸设备禁用此功能 我们已经在使用Modernizer,所以我可以检查HTML标记上的.no touch类,查看用户是否在触摸设备上。但是,为了避免重复代码并使其成为未来的证明(因此,我们不必记得每次添加新的焦点事件时都要检查),我只想扩展本机焦点事件以检查。无需触摸类,仅当该类存在时才继续 我如何扩展本机focus()事件,以

在一个有多个
focus()
事件分布在十几个js文件中的站点上工作,这些文件都处理为页面上的第一个文本输入提供焦点(即:在登录页面上,电子邮件字段自动提供焦点)。我想对所有触摸设备禁用此功能

我们已经在使用Modernizer,所以我可以检查HTML标记上的
.no touch
类,查看用户是否在触摸设备上。但是,为了避免重复代码并使其成为未来的证明(因此,我们不必记得每次添加新的焦点事件时都要检查),我只想扩展本机焦点事件以检查
。无需触摸
类,仅当该类存在时才继续

我如何扩展本机
focus()
事件,以便它检查
类的HTML标记。no touch
类存在时继续,但仅在未将匿名函数传递给
focus()
事件时才运行此检查

例如,有时我们将焦点与匿名函数一起使用,我不需要检查
。禁止触摸
,如下所示:

$("#login-email-address").focus(function(){ ... });
有道理吗?如果没有,请告诉我如何澄清

谢谢

像这样的

(function($,M){
    var nFocus = $.fn.focus;
    $.fn.focus = function(f){
        if(M.touch && !f)return this;
        return nFocus.apply(this,arguments);
    }
})(jQuery, Modernizer);

我必须说,我强烈建议你不要这样做。但这是你的密码,你想怎么做就怎么做。