2012-02-15 14 views
2

私はこの質問が何度も尋ねられていると知っていますが、私はstackoverflowとgoogleを検索しましたが、それらのどれも私のために働いていませんでした。私はjQueryライブラリの後prototype.jsの、scriptaculous.jsとlightbox.jsを入れたときに、私のuserdriveは動作しませんjqueryとプロトタイプの競合

echo "<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></script>\n"; 

echo "<script type=\"text/javascript\" src=\"javascript/watermark.min.js\"></script>\n"; 
echo "<script type=\"text/javascript\" src=\"javascript/jquery.cycle.js\"></script>\n"; 
echo "<script type=\"text/javascript\" src=\"http://vjs.zencdn.net/c/video.js\"></script>\n"; 

echo "<script type=\"text/javascript\" src=\"javascript/prototype.js\"></script>\n"; 
echo "<script type=\"text/javascript\" src=\"javascript/scriptaculous.js?load=effects,builder.js\"></script>\n"; 
echo "<script type=\"text/javascript\" src=\"javascript/lightbox.js\"></script>\n"; 

echo "<script type=\"text/javascript\" src=\"javascript/jquery.userdrive.js\"></script>\n"; 

を含み、そして、私は前にそれを置くとき、それは完全に動作しますが、ありません。私は$記号間に矛盾があることを知っていますが、これを修正する方法はわかりません。また、私のuserdriveには、ソート可能なグリッド用のajax呼び出しとコードが含まれています。

+2

チェックアウト:http://api.jquery.com/jQuery.noConflict/あなたが探しているものがあります。また、プロトタイプが互換性を失う可能性があるため、プロトタイプをオーバーライドする別のライブラリを含めるときは注意してください。 – dennmat

答えて

1

あなたuserdrive.jsが使用している場合グローバル変数 "$"を閉じないと、prototype.jsが "$"と "jQuery"間のリンクを削除するため、失敗します。

これはclousureです:

(function($){ 
    ... 
})(jQuery) 

は閉鎖にあなたのuserdriveを入れて試してみて、他のエラーを防止するためのnoConflictメソッドを使用しています。

<script type="text/javascript"> 
    jQuery.noConflict(); 
</script> 
+0

私のすべてをuserdriveに入れてください(function($){ ... })(jQuery) ? $(document).ready(function(){...})の代わりに。 – Grigor

+0

nop ..すべてを入れて... $(document).readyでも –

2

はnoConflict機能を使用します。

<script type="text/javascript" src="other_lib.js"></script> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
    $.noConflict(); 
    jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    }); 
    // Code that uses other library's $ can follow here. 
</script> 

は、あなたがこのコードの前にjQueryライブラリが含まれていることを確認し、ここでのドキュメントは、それには:

http://api.jquery.com/jQuery.noConflict/

+0

jquery、noConflict()、そして他のライブラリをインクルードする必要がありますか? – Grigor

関連する問題