TypeError:$(...).on不是函数

use*_*870 34 jquery lightbox cakephp-1.3

我正在使用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) {" 
Run Code Online (Sandbox Code Playgroud)

谁能帮助我理解这里的问题?

我在CakePHP 1.3中执行此实现.

Shi*_*pta 58

问题可能在于您使用的是旧版本的jQuery.因为旧版本的jQuery有'live'方法而不是'on'


T.J*_*der 30

通常的原因是你使用Prototype,MooTools或其他一些使用$符号的库,你在jQuery之后包含那个库,所以这个库"赢了"($自己动手) .所以返回值$不是jQuery实例,因此它没有jQuery方法(比如on).

您可以将jQuery与其他库一起使用,但如果这样做,则必须使用jQuery符号而不是别名$,例如:

jQuery('body').on(...);
Run Code Online (Sandbox Code Playgroud)

并且通常最好是在script包含jQuery 的标签之后立即添加它,包括另一个库之前:

<script>jQuery.noConflict();</script>
Run Code Online (Sandbox Code Playgroud)

...虽然如果你在jQuery之后加载另一个库则不需要它(如果你先加载另一个库的话).

但是,在页面权重方面,在同一页面上使用多个全功能DOM操作库并不理想.因此,如果你只能坚持使用Prototype/MooTools /无论是jQuery还是jQuery,那通常会更好.


Osk*_*kar 10

在我的例子中,通过将我的jQuery封装在:

(function($) {
//my jquery 
})(jQuery);
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您使用旧版本的 jQuery(< 1.7),那么您可以使用“bind”而不是“on”。这仅适用于您使用旧版本的情况,因为从 jQuery 3.0 开始,“bind”已被弃用。