2012-01-23 6 views
4

私はjQuery.noConflict()を使用しようとしますが、window.load関数では "$は関数ではありません"というエラーが出ます。jQuery.noConflictとその使い方

私のコード:

jQuery.noConflict(); 

jQuery(document).ready(function($) { 
    /** Dropdown Menu **/ 
    $('ul.tabs li:has(ul)').bind("click", function() { 
     $(this).find('ul').show('normal'); 
     //event.stopPropagation(); 
    }); 
    $('ul.tabs li').bind("mouseleave", function() { 
     $(this).find('ul').hide('normal'); 
     //event.stopPropagation(); 
    }); 
}); 

jQuery(window).load(function($) { 
    $('#container').fadeIn('normal'); 
}); 

私が代わりに「$」が正常に動作しますが、それは「$」の使用を継続することが可能となるのはjQueryを使用している場合は?
誰もが知っている/これが何が間違って理解?
ありがとう!

答えて

12

を使用したい場合。ただし、同じ動作は、loadハンドラには適用されません。

あなたloadハンドラの本体にjQuery$を交換したくない場合は、あなたが閉鎖でその変数をキャプチャすることができます:あなたはあなたのreadyハンドラ内でごloadハンドラを登録することができ、また

(function($) { 
    $(window).load(function() { 
     $("#container").fadeIn("normal"); 
    }); 
})(jQuery); 

$が正しく結合されています。

+0

はい、あなただけが正しい人です! –

+0

あなたは正しい私の友人です!!!!まさに私がやるべきこと!どうもありがとう! – Philip

3

jQuery.noConflict()を使用する場合、$はjQueryで使用するためには定義されていません。

あなたはdocで述べたように代わり$()

jQuery()を使用する必要があります。

多くのJavaScriptライブラリはjQueryの場合と同じ として、関数や変数名として$を使用します。 jQueryの場合、$はjQueryのエイリアスなので、 $を使わずにすべての機能を利用できます。我々は jQueryのと一緒に別のJavaScriptライブラリを使用する必要がある場合は、我々は$ .noConflict()への呼び出しコメントを


Thanskに戻って、他のライブラリに $の制御を返すことができます。

あなたは$パラメータjQueryの$オブジェクトは常にreadyハンドラに渡されるため、コードの最初の部分が機能

+0

表示されているコードを見ると、彼は$(document).ready()関数の$ asパラメータに入ります。関数内では、$ ... –

+0

にアクセスできます。それに気づいてくれてありがとう。 –

関連する問題