1

メイン サイトから JS ファイルの 1 つを取り込むサード パーティ サービスがあります。これは、ヘッダーとフッターのさまざまな部分を機能させるためです (メイン サイトから複製されています)。サード パーティのサービスは、信じられないほど古いバージョンの jQuery を使用しているため、.on()メソッド呼び出しが失敗します。これを検出して非推奨のメソッドに切り替えるための何かを書き込もうとしています。私が今持っているものは問題なく動作します(このファイルではクリックイベントのみを使用しています...今のところ):

if(!$.isFunction($.fn.on)) {
    $.fn.on = $.fn.click;
}

.on()サードパーティのアプリケーションを壊すことなく、新しいバージョンのjQueryに組み込まれているのと同じメソッドをメインファイルで引き続き使用できるように、上記をすべてのイベントで機能させたいと思います。私が試したことはうまくいきません:

if(!$.isFunction($.fn.on)) {
    $.fn.on = function(event, callback) {
        return $.fn[event](callback());
    }
}

ここで何が間違っていますか?

4

1 に答える 1

2

コールバックの実行が早すぎます。

if(!$.isFunction($.fn.on)) {
    $.fn.on = function(event, callback) {
        return $.fn.bind.call(this,arguments);
    }
}

これには、.on を使用するさまざまな方法の多くも欠けていますが、.on のソースをコピーするだけでなく、実際に機能させるにはかなりの時間がかかります。

ただし、実際にはこれを行うべきではありません。既存のページに予測できない他の奇妙な点が生じる可能性があるため、.bind. jQuery のすべてのバージョンに存在し、下位互換性のために引き続き存在するためです。

于 2013-09-19T20:54:06.747 に答える