7

だから私はjQueryとprototype.jsの両方を使用するWebサイトに取り組んでいますが、競合しています。

私はかなりの調査を行い、人々がこの問題を解決する唯一の方法は使用することであることがわかりました

<script>
 jQuery.noConflict();

 // Use jQuery via jQuery(...)
 jQuery(document).ready(function(){
   jQuery(\"div\").hide();
 });

 // Use Prototype with $(...), etc.
 $('someid').hide();

ただし、$ を jQuery に変更したくありません。これは、かなりの量の事前に作成されたコードを編集する必要があることを意味します。それらの競合を停止し、jQuery を $ のままにする方法はありますか?

4

5 に答える 5

10

bodydocument ready を使用する代わりに、次のようなクロージャーを ( の最後に)作成できます。

(function($) {
  //jQuery stuff
  $('.elem') // $ refers to jQuery
})(jQuery);

あなたの質問を正しく理解できれば

于 2012-04-05T19:48:27.347 に答える
6

いいえ、聞いたことがありません。ただし、コード変換の苦痛を最小限に抑えるには、次のようにすることができます。

var j$ = jQuery.noConflict();

その後、jQuery$呼び出しをに置き換えることができますj$。おそらく、単純な検索/置換呼び出しを使用することもできます。

于 2012-04-05T19:47:52.623 に答える
2
( function($){
   // $('jquery here')
})(jQuery);

関数内のすべての jquery コードで使用できます$

于 2012-04-05T19:51:09.523 に答える
0

これを行う簡単な方法は、作成済みのコードを関数にラップし、jQuery を渡すことです。そうすれば、既に作成されたコードを保持し、jQuery を新しいコードの識別子としてのみ使用できます。

(my_old_stuff = function($){
   $.my_existing_function(){
       alert('i allready exist');
   };
)(jQuery);

jQuery.my_existing_function();

それはうまくいくはずです。

一方、 $ を jQuery に置き換えることは、自動置換の場合はそれほど面倒ではないようです。

于 2012-04-05T19:51:59.160 に答える