0

自己実行関数に含まれる jQuery 拡張機能を作成しています。

(function($) {
    // global variables for the purposes of this test
    __$ = $;
    __$support = $.support;

    $.support.abc = "123";

    // Setup for my extension goes here.

})(jQuery);

私のテストページには、

<script type="text/javascript" src="jquery-1.5.2.js"></script>
<script type="text/javascript" src="myplugin.js"></script>
<script type="text/javascript">
    $(function() {
        console.log(__$ === $); // false
        console.log(__$support === $.support); // false
        console.log($.support.abc); // undefined
    });
</script>

なぜこれが起こるのですか?jQueryオブジェクトを上書きする可能性のあるスクリプトや jQuery プラグインは他にありません。

jQueryドキュメントの準備ができた後、jQuery ソース自体のどのコードがオブジェクトを上書きするかを見つけることができませんでした。何か案は?

jQuery.supportこれを回避する方法がない場合、ドキュメントの準備ができた後もアクセスできるオブジェクトに新しいプロパティを定義するための正しい手順は何でしょうか?

編集: jQuery ソースを誤って再評価したテスト コードの重要な部分を省略し、この問題が発生した理由を説明しました。以下の私の答えを見てください。

4

2 に答える 2

0

うわー、私は愚かだと感じます。

私のテストコード(質問に投稿しなかった部分)は意図的に要求jQuery.ajax()していましたjquery-1.5.2.js(これは進行状況イベントをテストするためのかなり大きなファイルであるため)。dataTypeただし、オプションを手動で以外に設定しない限りscript、jQueryはによって取得されたJavaScriptを評価することを忘れていましたjQuery.ajax()

そのため、jQueryは独自のソースコードの新しいコピーを評価していwindow.jQueryたため、上書きされていました。

于 2011-04-23T07:20:40.533 に答える
0

正しい出力が得られるため、何かが間違っています。

于 2011-04-23T06:18:22.087 に答える