便利な「モバイル」イベントのライブラリを作成しました (ここから入手できます)。基本的にタッチ イベントを統合して、1 つのイベントを要素にバインドできるようにし、ユーザーのデバイス (つまり、モバイルまたはデスクトップ) に関係なくトリガーします。
コードはうまく機能していますが、ユーザーの問題をデバッグしているときに、jQuery 1.9.0 を使用するとライブラリが機能しないことに気付きました (以前のバージョンの jQuery はすべて問題を引き起こしません)。
問題のあるコードは次のとおりです。
// Add Event shortcuts:
$.each(('tapstart tapend tap singletap doubletap taphold swipe swipeup swiperight swipedown swipeleft scrollstart scrollend orientationchange').split(' '), function(i, name) {
$.fn[name] = function(fn)
{
return fn ? this.bind(name, fn) : this.trigger(name);
};
$.attrFn[name] = true;
});
次の行のエラーUncaught TypeError: Cannot set property 'tapstart' of undefined
:
$.attrFn[name] = true;
誰かがこれを修正する方向に私を向けることができますか?
問題を示すために、2 つの jsFiddle デモをまとめました。
を定義する$.attrFn
と、イベントのコードは修正されますが、やswipe*
などの他の問題が発生します。たとえば、バインディングはエラーを生成するようになりました: 、問題のある行は次のとおりです。tap
doubletap
tap
Uncaught TypeError: Cannot call method 'call' of undefined
$.event.handle.call( obj, event );
ここでも、参照用に 2 つの jsFiddle があります。