0

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

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

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

例如,有时我们将焦点与匿名函数一起使用,而我不需要检查.no-touch,如下所示:

$("#login-email-address").focus(function(){ ... });

有道理?如果没有,请告诉我如何澄清...

4

1 回答 1

0

像这样的东西

(function($,M){
    var nFocus = $.fn.focus;
    $.fn.focus = function(f){
        if(M.touch && !f)return this;
        return nFocus.apply(this,arguments);
    }
})(jQuery, Modernizer);
于 2012-06-26T20:54:53.817 回答