だから、状況を考えてみましょう。私はJquery 1.4.2
をJqueryのメインバージョンとして使用するウェブサイトを持っています。 しかし、ユーザーは他のバージョン(1.2.1,1.5.1など)を使用しているカスタムテンプレートを使用することができます。だから、それはいくつかの状況でそれが矛盾をもたらす。ここで例えば
、異なるJqueryバージョンを矛盾なく使用する
//included in my main view
<script type="text/javascript" src="jquery-1.4.2.min.js" ></script>
<script type="text/javascript">
$(function() {
alert($().jquery);
});
</script>
//included in custom template
<script type='text/javascript' src='jquery-1.5.1.min.js'></script>
<script type="text/javascript">
$(function() {
alert($().jquery);
});
</script>
ので、それらの両方は、1.5.1(なぜなら文書の準備ができたときに初期化する)警告しています。だから私はこのような状況を避けたい。
今、私は私の頭の中で唯一の解決策を取得しました - 私のサイトで使用されているすべてののプラグインをnoConflict(true)
を使用してに新しいシンボルにすべて$
とJquery
記号を変更します。
より洗練されたソリューションがありますか、または私のサイトで使用されているすべてのプラグインの名前を本当に変更する必要がありますか?
P.S.別の方法として、下位互換性のあるプラグインを使用しているかもしれませんが、この状況では、すべてのバージョンと互換性を持たせるために多くのプラグインを含める必要があります。
、彼らはで定義された 'jQuery'オブジェクトを使用しますその瞬間。したがって、適切な順序でロードするだけです。独自のコードで正しいバージョンを使用するために、 'ready'コールバックは最初の引数としてjQueryへの参照を渡します。 –
私の例では、最初のアラートは1.4.2ではなく1.5.1になっています。この状況は多くのプラグインに表示されることがあります。 –
しかし、プラグインは通常 '(function($){...}(jQuery))'として定義されています。つまり、プラグイン '$'の内側には 'jQuery'あなたの場合、otoh、あなたは**グローバル** '$'にアクセスしています。これは後で2番目のjQueryスクリプトによって上書きされます。あなたの場合に相当するのは '$(function($){...})'です。試してみる。 –