9

便利な「モバイル」イベントのライブラリを作成しました (ここから入手できます)。基本的にタッチ イベントを統合して、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*などの他の問題が発生します。たとえば、バインディングはエラーを生成するようになりました: 、問題のある行は次のとおりです。tapdoubletaptapUncaught TypeError: Cannot call method 'call' of undefined

$.event.handle.call( obj, event );

ここでも、参照用に 2 つの jsFiddle があります。

4

2 に答える 2

12

そのオブジェクト ( .attrFn) は 1.8 では単なるスタブでした。1.9でなくなりました。

コードが 1.8 で動作する場合は、追加できるはずです

$.attrFn = $.attrFn || {};

どこかで修正します。

于 2013-01-17T17:48:04.610 に答える
8

jQuery 1.9 リリース ノートから

文書化されていないその他のプロパティとメソッド

次の内部プロパティとメソッドは文書化されておらず、1.9 で削除されました。それらに依存するコードはすべて書き直す必要があります。

  • jQuery.deletedIds
  • jQuery.uuid
  • jQuery.attrFn
  • jQuery.clean()
  • jQuery.event.handle()
  • jQuery.offset.bodyOffset()
于 2013-01-17T17:49:21.850 に答える