gpt4 book ai didi

javascript - 类型错误 : $ is undefined in jquery

转载 作者:行者123 更新时间:2023-11-30 08:03:47 24 4
gpt4 key购买 nike

我正在尝试在基于 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);

但是 Accordion 的结尾有:

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

然后“call(this)”位让我很不舒服?

有什么想法吗?

最佳答案

除了包含 jQuery 之外,您无需执行任何操作即可为 jQuery 定义 $。该定义是 jQuery 脚本的一部分。

此错误告诉您三件事之一。要么:

  1. 您在包含插件之前没有包含 jQuery(或者您尝试失败,例如 404),或者

  2. 在加载接管 $ 符号的 jQuery 之后,您正在加载其他内容,或者

  3. 您正在调用 jQuery.noConflict(),它会释放 $ 符号。

根据您的 $ = jQuery; 尝试没有成功,我认为它是 #1。因此,请确保脚本标记位于正确的位置,并确保您不会收到 404 错误(或类似错误)。


在您发表评论后更新:

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

首先,调用 noConflict 的 Wordpress 插件对我来说似乎不是个好主意。同样,tabcordian 根本不应该依赖于 $ 符号; jQuery 插件不能依赖于 $,因为人们可以使用 noConflict!然而,快速浏览一下 tabcordian 源代码就会发现它确实是这样做的:依赖于 $

我建议 fork 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 则不是。 (如果您正在使用严格模式,这是一种让 this 继续引用函数内的全局对象的方法。)但是由于该源是从 CoffeeScript 生成的,所以 this可能是样板 CoffeeScript 的东西,它可能这样做是为了支持严格模式。

关于javascript - 类型错误 : $ is undefined in jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21660326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com