2011-07-19 14 views
49

1番目のスニペットが機能しませんでした。ただし、$(ドル記号)をjQuery(2番目のスニペットを参照)に置き換えると、作業が開始されます。しかし、私はなぜそれほど寛容ではないのですか?誰も私にこれを説明することはできますか?どうもありがとう!

第一スニペット

jQuery.noConflict(); 
       $(document).ready(function(){  
        $("#insideTable > tbody > tr:odd").addClass("odd"); 
        $("#insideTable > tbody > tr:not(.odd)").hide(); 
        $("#insideTable > tbody > tr:odd").show(); 
        $("#insideTable > tbody > tr.odd").click(function(){ 
         $(this).next().toggle(); 
         $(this).find(".arrow").toggleClass("up"); 
        }); 

       }); 

第二スニペット

 jQuery.noConflict(); 
     jQuery(document).ready(function(){ 

       jQuery("#insideTable > tbody > tr:odd").addClass("odd"); 
       jQuery("#insideTable > tbody > tr:not(.odd)").hide(); 
       jQuery("#insideTable > tbody > tr:odd").show(); 
       jQuery("#insideTable > tbody > tr.odd").click(function(){ 
        jQuery(this).next().toggle(); 
        jQuery(this).find(".arrow").toggleClass("up"); 
       }); 

      }); 

答えて

91

jQuery.noConflict()はjQueryのに関連しているから、 "$" を "解放" するためです。通常、あなたのコードでは、 "jQuery"の代わりに$を使うことができます。 noConflict()を使用している場合は、これを行うことはできません。したがって、各 "$"を "jQuery"に置き換える必要があります。 。

多くのJavaScriptライブラリでは、関数名または変数名として$が使用されています.jQueryのように が使用されます。 jQueryの場合、$はjQueryのエイリアスなので、 $を使わずにすべての機能を利用できます。我々は jQueryのと一緒に別のJavaScriptライブラリを使用する必要がある場合、我々は$ .noConflict()を呼び出して戻って他のライブラリに $の制御を返すことができます。

あなたにも使用する全く新しいエイリアスを作成することができます

var myJqueryAlias = jQuery.noConflict(); 
myJqueryAlias(document).ready(function(){ 

     myJqueryAlias("#insideTable > tbody > tr:odd").addClass("odd"); 
     myJqueryAlias("#insideTable > tbody > tr:not(.odd)").hide(); 
     myJqueryAlias("#insideTable > tbody > tr:odd").show(); 
     myJqueryAlias("#insideTable > tbody > tr.odd").click(function(){ 
      myJqueryAlias(this).next().toggle(); 
      myJqueryAlias(this).find(".arrow").toggleClass("up"); 
     }); 

    }); 
+0

これが答えです! – trusktr

+14

これはうまくいきます。 'ready'コールバックに渡された最初の引数がjQueryオブジェクトであることを指摘しておきたいので、' .ready(function($){'を実行して関数内で' $ 'あなたが物事のために外側の$を使う必要がない限り、長い間。 – loganfsmyth

10

noConflict()を呼び出すと、$とjQuery関数の間の関連付けが削除されます。これは、競合することなく$に短縮する別のJavaScriptライブラリを使用できるようにするためです。

関連する問題