Jquery TypeError:$(…)。上不是函数

Jquery TypeError:$(…)。上不是函数,jquery,cakephp-1.3,lightbox,Jquery,Cakephp 1.3,Lightbox,我正在使用。添加JS和CSS文件后,我得到了以下错误类型错误: $(...).on is not a function at this line in js file "return $('body').on('click', 'a[rel^=lightbox], area[rel^=lightbox]', function(e) {" 有人能帮我理解这里的问题吗 我正在CakePHP1.

我正在使用。添加JS和CSS文件后,我得到了以下错误类型错误:

$(...).on is not a function at this line in js file                                           
 "return  $('body').on('click',       
'a[rel^=lightbox], area[rel^=lightbox]', function(e) {" 
有人能帮我理解这里的问题吗


我正在CakePHP1.3中实现这个功能

这通常是因为您也在使用Prototype、MooTools或其他一些使用
$
符号的库,并且您在jQuery之后包含该库,因此该库是“赢家”(将
$
作为自己的一部分)。因此,
$
的返回值不是jQuery实例,因此它没有jQuery方法(如
上的

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

jQuery('body').on(...);
通常最好是在包含jQuery的
脚本
标记之后,在包含另一个库的标记之前立即添加:

<script>jQuery.noConflict();</script>
jQuery.noConflict();
…尽管如果在jQuery之后加载另一个库(如果先加载另一个库),这不是必需的


但是,仅就页面重量而言,在同一页面上使用多个全功能DOM操纵库并不理想。因此,如果你能坚持使用Prototype/MooTools/随便什么,或者只使用jQuery,那通常会更好。

问题可能是如果你使用的是较旧版本的jQuery。因为较旧版本的jQuery使用“live”方法而不是“on”

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

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

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

我尝试了Oskar(以及许多其他)的解决方案,但对我来说,它最终只适用于:

jQuery(function($){
   // Your jQuery code here, using the $
});

请参阅:

在我的情况下,此代码解决了我的错误:

(function (window, document, $) {
            'use strict';
             var $html = $('html');
             $('input[name="myiCheck"]').on('ifClicked', function (event) {
             alert("You clicked " + this.value);
             });
})(window, document, jQuery);
你不应该把你的函数放进去
$(document).ready

您确实包含了jQuery 1.7版或更高版本,并且将代码包装到了document.ready对吗?是的,我已经添加了jQuery 1.7,我还没有为lightbox实现任何代码,如果我只添加js和css文件,我得到了这个error@user1613870:那么你是说你引用的代码不是你的?那么,它来自哪里?@Crowder该代码来自lightbox.js,我正在使用的库,在这一行我是get errorCrowder,感谢您的指导,我没有在jquery之前添加任何库,所有库都是在jquery库之后添加的。我正在使用这种技术和@user1613870:正如我所说的,如果您在jQuery之后包含另一个库(如Prototype或MooTools),您将遇到这个问题。(如果你以前把它们放进去就不会了;如果你以前放过,你会有不同的问题。)你是在使用原型还是MooTools?noConflict对我没有任何帮助。。。但是jQuery('body')。在(…)上;解决了这个问题。。。谢谢我现在就知道了:)你能解释一下你所说的“我的jQuery”是什么意思吗?你的意思是
jqueryversion x.x.x
还是
jQuery cycle.all
还是你正在编写的脚本?我想他指的是脚本,是的,围绕该函数封装我的脚本实际上解决了我的问题。在我的场景中,你是一个传奇。非常感谢。