37

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

6 に答える 6

59

古いバージョンの jQuery を使用している場合に問題が発生する可能性があります。古いバージョンのjQueryには「on」ではなく「live」メソッドがあるため

于 2013-12-19T07:07:39.593 に答える
31

これの通常の原因は、Prototype、MooTools、またはシンボルを利用する他のライブラリも使用しており$ jQuery の後にそのライブラリを含めているため、そのライブラリが「勝っている」こと$です (それ自体が有利です) 。 . したがって、 の戻り値は$jQuery インスタンスではないため、jQuery メソッドはありません ( などon)。

これらの他のライブラリで jQuery を使用できますが、使用する場合はjQuery、エイリアスではなくシンボルを使用する必要があります。次に$例を示します。

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

そして通常、これを jQuery を含むタグの直後script、他のライブラリを含むタグの前に追加するのが最善です:

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

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

ただし、同じページで複数のフル機能の DOM 操作ライブラリを使用することは、ページの重さの点で理想的ではありません。したがって、Prototype/MooTools/whatever または jQuery だけを使い続けることができれば、通常はそのほうがよいでしょう。

于 2013-03-27T22:06:04.827 に答える
12

この問題は、私の場合、jQuery を次のようにカプセル化することで解決されます。

(function($) {
//my jquery 
})(jQuery);
于 2015-07-16T11:47:42.513 に答える