类型错误:n不是一个函数。

5

我正在建设一个WordPress网站,其中包含以下JS代码:

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

我在控制台看到了“Everything loaded”(一切已加载),但下面这行代码会导致错误:
Uncaught TypeError: n is not a function

我不明白是什么原因导致了这个问题。JS文件有jQuery作为依赖项,并且其他jQuery函数都可以正常工作。只有上面的部分会导致错误。
这是控制台的截图,因为有些人难以相信上述代码会导致错误。 enter image description here enter image description here

3
请提供相关的代码,才能确定是否会出现“n不是函数”的错误。提供的代码中并未发现这个问题。 - Bhojendra Rauniyar
1
看起来你把 jQuery 别名设为 $...尝试使用:jQuery('.slides').fadeIn(); - jolmos
2个回答

9
问题出在您将事件参数设置为处理程序函数中的$名称提供的内容。这会覆盖jQuery实例中的$,因此会出现错误。您只需要从函数参数中删除$即可:
jQuery(window).load(function() { // < remove the $ here
    console.log('Everything loaded');
    jQuery('.slides').fadeIn();
});

请注意,根据您的评论,您想在使用noConflict()后将jQuery变量别名为$。要做到这一点,您可以使用以下签名的document.ready处理程序:
jQuery(function($) {
    $(window).load(function() {
        console.log('Everything loaded');
        $('.slides').fadeIn();
    });
});

我简直不敢相信,因为我在许多项目中都使用了函数包装器内的 $ 来避免 jQuery 冲突。这怎么可能是问题呢? - Bhojendra Rauniyar
@BhojendraNepal 这不是冲突,而是由于参数名称错误,在函数范围内更改了 $ 变量的值。 - Rory McCrossan
@RoryMcCrossan 谢谢,当然那样做可行,但我不明白为什么使用别名不起作用? - Chuck Le Butt
1
这是因为提供给函数的参数是一个 event,而不是 jQuery 的实例。 - Rory McCrossan
1
没问题,很高兴能帮忙。我更新了我的答案,以使区分更清晰。 - Rory McCrossan
显示剩余2条评论

-1

//尝试下面的代码(删除$)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接