1

私はjavascriptモジュールに取り組んでおり、スタンドアロンにしたいです。また、jQueryが提供するクロスブラウザー機能を使用したいと思います。ユーザーが含める可能性のあるjQueryと競合することなく、モジュール内にjQueryを含めるにはどうすればよいですか?

グローバル名前空間と競合することなくプロジェクトに他のライブラリを追加できるように、これを行う一般的な方法はありますか?

4

1 に答える 1

1

すべてのjQueryをJSファイルにコピーして、「競合なし」モードで実行してみます。次に、JSファイル全体を、引数をとらない即時呼び出し関数式$でラップすると、変数がグローバルスコープに干渉することはありません。

したがって、ファイルは次のようになります。

(function () {
    // all of jQuery goes here

    $.noConflict();
    var $ = jQuery.noConflict();

    // your code that uses $ here
})();

IIFEですべてをラップすると、$変数がローカルに保持されるため、ファイル外のコードでアクセスできなくなります。それは少し極端かもしれませんが、うまくいくはずです。

編集:私が自分で試したので、上記の解決策は正しくありません。

実際にやりたいのは、ユーザーのバージョンの前にjQueryのバージョンが含まれていることを確認することです。次に、コード内で、コードの代わりに、またはコード内で実行var myJQ = jQuery.noConflict();して使用します。この例を参照してください。myJQ$jQuery

于 2012-08-02T19:34:56.947 に答える