2013-03-27 109 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 2013-03-27 22:02:51

+0

是的,我已经添加jquery 1.7 – user1613870 2013-03-27 22:03:29

+0

我还没有实现任何代码灯箱,但如果我只是添加js和css文件我得到这个错误 – user1613870 2013-03-27 22:04:18

回答

26

这样做的通常的原因是,你使用的原型,MooTools的,或者说利用了$符号的一些其他图书馆,而你的jQuery包括后库,因此该库是“获胜“(本身为$)。因此$的返回值不是jQuery实例,所以它没有jQuery方法(如on)。

您可以使用jQuery与其他库,但如果你这样做,你必须使用jQuery符号,而不是它的别名$,如:

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

而且,如果你加入这通常最好是后立即您script标签包括jQuery的,一个包括其他图书馆前:

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

...如果您加载OTH虽然它不是需要呃在jQuery之后的库(这是如果你先加载其他库)。

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

+0

克劳德,感谢您的指导方针,我没有添加任何库jQuery之前,所有图书馆已添加jQuery库后。我使用这种技术<?php echo $ html-> css('skin/lightbox.css','stylesheet');数组('inline'=> false)); ?> – user1613870 2013-03-27 22:13:18

+1

@ user1613870:正如我所说的,如果你在** jQuery(如Prototype或MooTools)之后包含另一个库**,则会出现此问题。 (如果你在*之前把它们放进*,如果你在*之前做过*,你会遇到不同的问题。)你使用的是Prototype还是MooTools? – 2013-03-27 22:18:08

49

问题可能在于您使用的是旧版本的jQuery。如果使用的是旧版本的jQuery

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

这个问题就解决了,在我的情况下,通过在封装我的jQuery (< 1.7),那么你可以使用“绑定”而不是“开”。这只会在你使用旧版本时才起作用,因为从jQuery 3.0开始,“bind”已被弃用。

3

:因为旧版本的jQuery有“活”的方法,而不是“开”

相关问题