私はjQueryを使用して既存のページのモジュールを構築しています。このページではプロトタイプも使用しているので、通常のjQueryプロトタイプの競合があります。私はjQuery.noConflict()を使用しています。すべてがieを除くすべてのブラウザで正常に動作します(ie8でテスト済み)。 私はここや他のサイトのすべての同様の質問を読んだが、うまくいかない。 これは動作原理です。プロトタイプ(effects.js、prototip.jsなど)を使用してプロトタイプやその他の.jsファイルを読み込んだ後、モジュール(jQueryはプロトタイプの後に読み込まれます)を読み込みます。 プロトタイプの$()関数を$$$()に変更する方法については読んでいますが、これは不可能です(プロトタイプを使用する他の多くのモジュールを変更する必要があります)。jqueryのプロトタイプはie8でのみ競合します。
は、私は
(function($) {
//my jQuery code in here
})(jQuery);
を使用して読んしかし、私はそれを完全に理解していません。私のコードは次のようにについてです:
$J = jQuery.noConflict();
$J(document).ready(function(){
fun1();
//jquery stuff
fun2();
});
function fun1(){
//stuff/jQuery code/ call other functions
}
function fun2(){
//stuff/jQuery code/ call other functions
}
私は(function($) { /*all the above*/})(jQuery);
に上記のすべてを置く場合、私はすべての機能が未定義であることを取得します。
私は間違っていますか?それとも別の解決策がありますか?
どちらか一方を使用することを強くお勧めしますが、両方を使用することはお勧めしません。あなたはあまりにも多くの手間をかけることなく衝突させることができますが、それはあなたのユーザーが2つの異なるライブラリを読み込まなければならないことを意味します。 jQueryとPrototypeのプラグインがあります。これはあなたが望むほとんどのことを行います。 –