2

私が構築した小さなキャンバス アプリを、私が何も制御できない SharePoint サイトの巨大な混乱に組み込む必要があります。アプリは "WebPart" ラッパーに入りますdiv。私のJSで物事をきれいに整頓するために、ラッパーオブジェクトを常にコンテキストとして使用するjQueryのクローンバージョンを作成できると考えていました。

var ctxed$ = ctxjQuery('#wrapper-el'); //this is what I don't get

(function($){
   $('p').addClass('awesome'); //should only affect elements inside #wrapper-el
})(ctxed$)

とにかく、私が試したことはうまくいきませんでした。whichを使用してみ$.proxyましたが、期待どおりに機能しませんでした (ここではコンテキストが異なるため...)。

これは私が現時点で立ち往生しているポイントです:

function getContextifiedjQuery(ctx) {

    var fn = function () {

        return $.call(arguments[0], ctx);
    }

    $.each($, function (k, v) {
        fn[k] = v;
    });

    return fn;

}

var wrapper$ = getContextifiedjQuery('#wrapper');

wrapper$('p').css('color', 'red');
wrapper$.each([1, 2, 3], function () {
    alert(this)
});

これは単純なテストケースとして機能しますが、プロジェクトで使用しようとすると、循環参照が発生し、うまくいきません。ここで私が見逃しているのは何ですか?

4

2 に答える 2

1

これを試して

var ctxed$ = function (selector)
{
    return $(selector, '#wrapper-el');
}
(function($){
   $('p').addClass('awesome'); //should only affect elements inside #wrapper-el
})(ctxed$);
于 2013-06-27T19:53:58.260 に答える