【问题标题】:TypeError: n is not a function类型错误:n 不是函数
【发布时间】:2016-02-25 12:33:15
【问题描述】:

我正在构建一个包含以下 JS 的 Wordpress 网站:

jQuery(window).load(function($) {
    console.log('Everything loaded');
    $('.slides').fadeIn();
});

我在控制台中看到“已加载所有内容”,但以下行会导致错误:

Uncaught TypeError: n is not a function

我不明白是什么导致了问题。 JS 文件有 jQuery 作为依赖项,还有其他 jQuery 函数可以正常工作。只是上面的部分导致了错误。


这是控制台的屏幕截图,因为有些人很难相信上面的代码会导致错误。

【问题讨论】:

  • 使用提供的代码:我不相信它会通过n is not a function。请发布引发此错误的相关代码。
  • 好像你有jQuery 作为$ 的别名...试试:jQuery('.slides').fadeIn();

标签: javascript jquery wordpress


【解决方案1】:

问题是因为您已将事件参数设置为提供给名称为$ 的处理函数。这会覆盖 $ 的 jQuery 实例,因此会出现错误。您只需从函数参数中删除$

jQuery(window).load(function() { // < remove the $ here
    console.log('Everything loaded');
    jQuery('.slides').fadeIn();
});

请注意,在您的 cmets 中,您希望在使用 noConflict() 后将 jQuery 变量别名为 $。为此,您可以使用此签名 document.ready 处理程序:

jQuery(function($) {
    $(window).load(function() {
        console.log('Everything loaded');
        $('.slides').fadeIn();
    });
});

【讨论】:

  • 我不敢相信,因为我在函数包装器中使用(在许多项目中)$ 来避免 jquery 冲突。这怎么可能是问题?
  • @ChuckLeButt 听起来你应该在函数内部使用jQuery 而不是$,请参阅我的更新。
  • @BhojendraNepal 这不是冲突,由于参数命名错误,它正在更改函数范围内的 $ 变量的值。
  • 因为提供给函数的参数是event,而不是jQuery的实例。
  • 没问题,很高兴为您提供帮助。我更新了我的答案以使区别更清楚。
【解决方案2】:

//试试下面的代码(去掉$)

jQuery(window).load(function() {
  console.log('Everything loaded');
  $('.slides').fadeIn();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-26
    • 2013-04-01
    • 2016-03-06
    • 2018-04-28
    • 2019-02-14
    • 2021-10-02
    • 2021-10-30
    相关资源
    最近更新 更多