You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress更新后自定义JS失效:Uncaught TypeError: $ is not a function

解决WordPress升级后自定义JS中$ is not a function错误

兄弟,这个问题我太熟了!你遇到的Uncaught TypeError: $ is not a function本质是WordPress默认启用了jQuery的noConflict模式——也就是说,jQuery会主动放弃$这个常用简写别名,防止和其他JavaScript库(比如Prototype、MooTools)产生命名冲突。

之前你的网站可能有主题或插件帮你全局映射了$到jQuery,但升级后这个映射逻辑失效了,导致自定义JS里的$找不到对应的函数。

给你几个靠谱的解决方案,按优先级推荐:

方案1:用自执行匿名函数包裹代码(最推荐,不用改内部代码)

只需要把你的所有自定义JS代码套进一个自执行函数里,把jQuery作为参数传入并命名为$,这样函数内部的$就可以正常代表jQuery了:

(function($) {
  // 这里面的$完全等同于jQuery,放心用
  // 为页面应用效果
  var $headereffect = $('.hero-effect');
  $headereffect.waypoint(function (direction) {
    if (direction == 'down') {
      $headereffect.addClass('hero-effect-animation');
    } else {
      $headereffect.removeClass('hero-effect-animation');
    }
  }, { offset:'1px' });
  // 为默认页面页眉应用效果
  var $headereffect = $('#page-header');
  $headereffect.waypoint(function (direction) {
    if (direction == 'down') {
      $headereffect.addClass('hero-effect');
    } else {
      $headereffect.removeClass('hero-effect');
    }
  }, { offset:'1px' });
})(jQuery);

方案2:全局替换$为jQuery

如果代码量不大,直接把所有$改成jQuery也能解决问题:

// 为页面应用效果
var $headereffect = jQuery('.hero-effect');
$headereffect.waypoint(function (direction) {
  if (direction == 'down') {
    $headereffect.addClass('hero-effect-animation');
  } else {
    $headereffect.removeClass('hero-effect-animation');
  }
}, { offset:'1px' });
// 为默认页面页眉应用效果
var $headereffect = jQuery('#page-header');
$headereffect.waypoint(function (direction) {
  if (direction == 'down') {
    $headereffect.addClass('hero-effect');
  } else {
    $headereffect.removeClass('hero-effect');
  }
}, { offset:'1px' });

方案3:通过WordPress脚本注册添加全局$映射

如果你的自定义JS是通过WordPress官方的wp_enqueue_script方法加载的,可以在注册脚本后添加一段inline代码,全局把$映射为jQuery:

// 先注册你的自定义脚本,依赖指定为jquery
wp_enqueue_script(
  'custom-hero-script',
  get_template_directory_uri() . '/js/your-custom-script.js',
  array('jquery'), // 声明依赖jQuery,确保jQuery先加载
  '1.0',
  true // 放在页面底部加载,优化性能
);
// 添加inline脚本,在你的自定义脚本前执行,映射$到jQuery
wp_add_inline_script('custom-hero-script', 'var $ = jQuery;', 'before');

额外提醒

别忘了确认waypoint插件是否正常加载——你的代码用到了.waypoint()方法,如果这个插件没正确引入,后续可能还会出现新的错误。不过根据你当前的报错信息,核心问题还是jQuery的别名问题,先解决这个再说。

内容的提问来源于stack exchange,提问作者Mr Toad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:39:58