既存サイトにjQueryで処理を追加しているときに、「$ is not a function」とエラーが出て少し調べたのでメモ。
jQuery.noConflict()
prototype.jsなどの$関数を使う他のライブラリと一緒に使用する場合、jQuery.noConflict()メソッドを実行して、$を使って記述する部分をjQueryに置き換えることで、他のライブラリとの競合を避けることができます。
今回の場合、処理を追加している部分より前でjQuery.noConflict()が実行されていたため、「$ is not a function」とエラーが出ていました。
JavaScript
jQuery.noConflict(); $(function() { $('body').css('background', '#999'); });
jQuery.noConflict()でエラーが出る場合のデモページ
$をjQueryに変更することでエラーが出ないようにできます。
JavaScript
jQuery.noConflict(); jQuery(function() { jQuery('body').css('background', '#999'); });
または、jQuery(function($){ ~ });のような形にすると、その中で$を使用する事ができます。
JavaScript
jQuery.noConflict(); jQuery(function($) { $('body').css('background', '#999'); });
【参考サイト】
- jQuery.noConflict() – jQuery 日本語リファレンス
- TECH Matari » Archive » jQueryのプラグインで超ハマる($ is not a function)
- jQueryと他のライブラリを同時に使用する方法 – jQuery – StackTrace
コメントが承認されるまで時間がかかります。