2013-03-27 12 views
28

私はjQuery liteboxを使用しています。 JSとCSSファイルを追加した後、私はこのエラーが発生しました。TypeError:

$(...).on is not a function at this line in js file           
"return $('body').on('click',  
'a[rel^=lightbox], area[rel^=lightbox]', function(e) {" 

ここで問題を理解できる人は誰でも助けてくれますか?

私はCakePHP 1.3でこの実装を行っています。

+4

あなたはjQueryのバージョン1.7以降が含まれなかった、とあなたはラップをしましたdocument.readyにあなたのコードはありますか? – adeneo

+0

はいjquery 1.7を追加しました – user1613870

+0

Lightbox用のコードはまだ実装していませんが、jsとcssファイルを追加するとこのエラーが発生します。 – user1613870

答えて

26

本の一般的な原因は、あなたがプロトタイプ、MooToolsは、または$記号を使用するいくつかの他のライブラリを使用している、とあなたはjQueryの後に、そのライブラリを含めている、となるようにライブラリー」であるということです(それ自身のために$を取る)。戻り値$はjQueryインスタンスではないため、jQueryメソッドはありません(onなど)。

あなたはそれらの他のライブラリとのjQueryを使用することができますが、あなたがしなければ、あなたはむしろそのエイリアス$よりjQuery記号を使用する必要があり、例えば:

jQuery('body').on(...); 

そして、あなたがた直後にこれを追加する場合、それは通常、最高です他のライブラリを含む1の前にjQueryの、など、あなたのscriptタグ:

<script>jQuery.noConflict();</script> 

...それはあなたがOTHをロードする場合を必要ではありませんが、 jQueryの後のライブラリ(最初に他のライブラリをロードする場合)。

同じページで複数のフル機能のDOM操作ライブラリを使用することは、ページの重量だけでは理想的ではありません。ですから、Prototype/MooTools /何でもあればjQueryだけでも使えるなら、通常はそれが良いでしょう。

+0

クラウダー、ガイドラインありがとう、jqueryの前にライブラリを追加していない、すべてのライブラリがjqueryライブラリの後に追加されています。私はこのテクニックを使っています。<?php echo $ html-> css( 'skin/lightbox.css'、 'stylesheet'); ?>と<?php echo $ html-> script(array( 'libs/lightbox')、array( 'inline' => false)); ?> – user1613870

+1

@ user1613870:** jQuery(PrototypeやMooToolsのような)の後に別のライブラリ**を追加している場合は、この問題が発生します。 (前に*を入れていない場合は、*前に*行った場合は別の問題があります)。PrototypeやMooToolsを使用していますか? –

49

古いバージョンのjQueryを使用している場合、問題が発生する可能性があります。あなたはjQueryの古いバージョンを使用している場合

(function($) { 
//my jquery 
})(jQuery); 
8

この問題は「オン」の「ライブ」の方法を持っているので、 (< 1.7)、 "on"ではなく "bind"を使用できます。これはjQuery 3.0の時点では "bind"が非推奨になっているので、古いバージョンを使用している場合にのみ機能します。

3

:jQueryの古いバージョンのではなく、中に私のjQueryをカプセル化することによって、私の場合には、解決され

関連する問題