1

インターネット マーケティングに関連するサードパーティのスクリプトを使用しているため、これを実行したいと考えています。それらの一部には、含まれているjQueryライブラリが含まれている可能性があり、私のWebサイトに含まれている最近または最新のjQueryライブラリに干渉します.

したがって、変数を使用して、Web サイトの読み込み時に .on() と .bind() を動的に切り替えたいと思います。

たとえば、グローバル変数があるとします。

var incJS = false;

そして今、サードパーティのスクリプトに応じて、古いLibが含まれているかどうかがわかっているので、これを使用します。

function tpNetwork ()
{
    incJS = true;

    startGateway('XXXXX');

    $('#fancybox-outer')
        .delay(1000)
        .fadeTo(300, 1);

    preventGTW();
    widgetStyle();
}

ご覧のとおり、一番下に関数がありますwidgetStyle()

その関数には多くのものが含まれていますが、重要な部分は次のとおりです。

$(window).on('resize', function () {
    if ($('.widget_wrap').length) widgetCenter_horizontal();
});

そこに .on() メソッドがあります。これは、そのサードパーティ ネットワークで使用されている非常に古い jQuery ではサポートされていません。すべての .on() を .bind() に切り替えたいのですが、複製せずに方法がわかりません。私はこのようにしましたが、重複していて、もっと簡単な方法があると思います。

if (!incJS)
{
    $(window).on('resize', function () {
        if ($('.widget_wrap').length) widgetCenter_horizontal();
    });
}
else
{
    $(window).bind('resize', function () {
        if ($('.widget_wrap').length) widgetCenter_horizontal();
    });
}

あらゆる種類のヒント/ヘルプをいただければ幸いです。私は本当にアイデアがなく、調査を行っても何も見つかりませんでした。

4

2 に答える 2

3

どうですか:

$(function(){
    if(!$.fn.on) $.fn.on = $.fn.bind;
});

もちろん、これは委任サポートを除外しています。

デモ

于 2013-08-07T13:38:30.340 に答える
0

@smerny のコメントと @roasted の回答のおかげで、このようにして問題を解決しました。すべてのヒントと回答に感謝します!

$.fn.onbind = function () {
    if (!ajaxGateway)
        $.fn.onbind = $.fn.on;
    else
        $.fn.onbind = $.fn.bind;
};

そして今、すべてが私が望んでいたように機能します。これが例です。

$(window).onbind('resize', function () {
    if ($('.widget_wrap').length) widgetTop();
});
于 2013-08-07T15:35:40.450 に答える