0

複数のイベントがページの最初のテキスト入力にフォーカスを与えることをすべて処理するおそらく 12 個の js ファイルに分散しているサイトで作業してfocus()います (つまり、ログイン ページでは、電子メール フィールドに自動的にフォーカスが与えられます)。すべてのタッチ デバイスでこの機能を無効にしたいと考えています。

私たちはすでに Modernizr を使用しているので.no-touch、HTML タグのクラスをチェックするだけで、ユーザーがタッチ デバイスを使用しているかどうかを確認できます。.no-touchただし、コードの重複を回避し、この将来の証拠を作成するために (新しいフォーカス イベントを追加するたびにチェックすることを覚えておく必要はありません)、ネイティブ フォーカス イベントを拡張してクラスをチェックしたいと思います。そのクラスが存在する場合にのみ続行します。

focus()クラスの HTML タグをチェックし、.no-touchそれが存在する場合は継続するようにネイティブ イベントを拡張するにはどうすればよい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 に答える