我正在使用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中执行此实现。
我正在使用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中执行此实现。
这样做的通常的原因是,你使用的原型,MooTools的,或者说利用了$
符号的一些其他图书馆也,而你的jQuery包括后库,因此该库是“获胜“(本身为$
)。因此$
的返回值不是jQuery实例,所以它没有jQuery方法(如on
)。
您可以使用jQuery与其他库,但如果你这样做,你必须使用jQuery
符号,而不是它的别名$
,如:
jQuery('body').on(...);
而且,如果你加入这通常最好是后立即您script
标签包括jQuery的,一个包括其他图书馆前:
<script>jQuery.noConflict();</script>
...如果您加载OTH虽然它不是需要呃在jQuery之后的库(这是如果你先加载其他库)。
尽管在页面权重方面,在同一页面上使用多个全功能DOM操作库并不理想。所以如果你只能坚持Prototype/MooTools /无论或只是jQuery,那通常会更好。
克劳德,感谢您的指导方针,我没有添加任何库jQuery之前,所有图书馆已添加jQuery库后。我使用这种技术<?php echo $ html-> css('skin/lightbox.css','stylesheet');数组('inline'=> false)); ?> – user1613870 2013-03-27 22:13:18
@ user1613870:正如我所说的,如果你在** jQuery(如Prototype或MooTools)之后包含另一个库**,则会出现此问题。 (如果你在*之前把它们放进*,如果你在*之前做过*,你会遇到不同的问题。)你使用的是Prototype还是MooTools? – 2013-03-27 22:18:08
问题可能在于您使用的是旧版本的jQuery。如果使用的是旧版本的jQuery
(function($) {
//my jquery
})(jQuery);
这个问题就解决了,在我的情况下,通过在封装我的jQuery (< 1.7),那么你可以使用“绑定”而不是“开”。这只会在你使用旧版本时才起作用,因为从jQuery 3.0开始,“bind”已被弃用。
:因为旧版本的jQuery有“活”的方法,而不是“开”
我试图奥斯卡(和许多其他)的解决方案,但对我来说finaly只合作过:
jQuery(function($){
// Your jQuery code here, using the $
});
参见:https://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/
你确实包括jQuery的版本1.7或更高版本,以及你做了总结您在document.ready中的代码正确吗? – adeneo 2013-03-27 22:02:51
是的,我已经添加jquery 1.7 – user1613870 2013-03-27 22:03:29
我还没有实现任何代码灯箱,但如果我只是添加js和css文件我得到这个错误 – user1613870 2013-03-27 22:04:18