【问题标题】:jQuery Error: Uncaught TypeError: $ is not a functionjQuery 错误:未捕获的 TypeError:$ 不是函数
【发布时间】:2015-10-10 17:41:44
【问题描述】:

我遇到了这个问题,因为我使用了一些第三方脚本,这给我带来了错误。该脚本与作者实际发布的wordpress插件有关。

我正在使用“iLightBox”插件来为我的图像显示 litebox。但是我需要设置哪些图像出现在灯箱库中。我一直在使用开发者网站,发现如下网址:http://www.ilightbox.net/faq.html

脚本 5 似乎可以满足我的需要:

jQuery(document).ready(function(){

    (function(){
      var groupsArr = [];
      $('[rel^="ilightbox["]').each(function () {
        var group = this.getAttribute("rel");
        $.inArray(group, groupsArr) === -1 && groupsArr.push(group);
      });
      $.each(groupsArr, function (i, groupName) {
        $('[rel="' + groupName + '"]').iLightBox({ /* options */ });
      });
    })();

  });

我在 custom.js 文件中运行此代码,我可以在 Chrome 中使用“检查元素”看到文件加载正确,但脚本错误如下:

“未捕获的类型错误:$ 不是函数”。

我已经阅读了其他用户的一些帖子,他们解释说我需要用一个函数封装并用 '(jQuery)' 完成,但是如果我这样做只会产生更多错误。

谁能帮助我?

显示错误的我的网站:http://www.complete-models.com/uncategorized/16-alien-figure/

【问题讨论】:

标签: javascript jquery wordpress


【解决方案1】:

如果您可以更改代码,只需将 $ 替换为 jQuery

$('[rel^="ilightbox["]').each(function () {

jQuery('[rel^="ilightbox["]').each(function () {

【讨论】:

  • 可以在函数定义中用简单的$ 纠正代码。只需指向文档并关闭问题。
  • 但这也是一种解决方案。 jQuery 应该适用于 OP。
  • 我已将每个 '$' 替换为 'jQuery' (因为它们也显示为错误)。我的代码如下所示: jQuery(document).ready(function(){ (function(){ var groupsArr = []; jQuery('[rel^="ilightbox["]').each(function () { var group = this.getAttribute("rel"); jQuery.inArray(group, groupsArr) === -1 && groupsArr.push(group); }); jQuery.each(groupsArr, function (i, groupName) { jQuery ('[rel="' + groupName + '"]').iLightBox({ /* options */ }); }); })(); 但是我现在得到错误:“iLightBox 不是函数”
【解决方案2】:

确保您在jQuery 之后加载了custom.js,因此在html 文件中,jQuery 的<scipt> 标记应高于custom.js

【讨论】:

  • 你说的是这个吗? '
  • 是的,首先需要加载 jQuery,所以它的包含脚本应该写在 custom.js 之上