微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-TypeError:$在jquery中未定义

我正在尝试在基于wordpress的网站上的jquery中使用“ tabcordion”库. Tabcordion javascript文件正在“入队”,并出现在jquery文件之后(这样看起来就可以了).

jQuery代码的开头是:

(function($) {
 var Tabcordion;

 $.fn.tabcordion = function(option) {
   return this.each(function() {
    var $this, data, options;
    $this = $(this);
    // rest of code ....

当我加载页面时,在Firebug中收到错误“ TypeError:$is undefined”

经过一番谷歌搜索,我改变了所有的$. jQuery.

这样可以解决一些问题,但是随后我得到了关于该行的错误

 $this = $(this);

我假设我没有为jquery定义$.我尝试在函数顶部添加一行:

$= jQuery;

但这没用.

有什么想法可以让$表现出来吗?

我有一个起作用的脚本,它包含在:

(function($){ jQuery(document).ready(function($){
    // code in here
}); })(jQuery);

但是Tabcordion的结尾有:

(function($) {
  // tabcordion code....
}).call(this);

而“ call(this)”位把我扔了吗?

有任何想法吗?

解决方法:

除了包括jQuery外,您无需做任何其他事情来为jQuery定义$.该定义是jQuery脚本的一部分.

错误告诉您三件事之一.或者:

>在包含插件之前(或尝试失败,例如404),您尚未包含jQuery,或者
>您在加载接管$符号的jQuery之后加载其他内容,或者
>您正在调用jQuery.noConflict(),它将释放$符号.

基于您的$= jQuery;尝试不起作用,我会说这是第一名.因此,请确保确保script标记在正确的位置,并确保没有收到404错误(或类似错误).

发表评论后更新:

I’m using a plugin called “use google libraries”. That is calling jQuery.noConflict() after it has run.

首先,对我来说,一个名为noConflict的wordpress插件似乎是个坏主意.同样,烟草花店根本不应该依赖$符号. jQuery插件不得依赖$,因为人们可以使用noConflict!但是快速浏览一下tabcordian数据源,就可以看出它确实是这样做的:依靠$.

我建议分叉tabcordian并进行更正.在插件中执行此操作的通常方法是,以(function($){以})(jQuery);结尾,如下所示:

(function($) {
    // plugin code here, can use $because it refers to our argument,
    // not the global symbol that may not be there
})(jQuery);

重新Tabcordian使用.call(this)会使您感到困惑:

(function() {
    // ...tabcordian source...
}).call(this);

如果您没有在函数中使用严格模式,那完全没有意义,而tabcordian则不是. (如果使用严格模式,则可以使它继续引用函数中的全局对象.)但是,由于该源是从CoffeeScript生成的,因此可能是CoffeeScript的样板,并且可能正在这样做以支持严格模式.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐