Javascript WordPress更新后JS不再工作-UncaughtTypeError:$不是函数

Javascript WordPress更新后JS不再工作-UncaughtTypeError:$不是函数,javascript,jquery,jquery-waypoints,Javascript,Jquery,Jquery Waypoints,上周,我将正在开发的一个网站更新为最新的WordPress。所有的自定义JS都不再工作了,我也不知道为什么 即使我在部分中删除它以尝试隔离问题,我总是会得到“UncaughtTypeError:$不是函数” 我不知道是什么导致了这一切 就我所见,所有脚本都按预期加载 不幸的是,我的自定义文件中的所有JS都是从堆栈溢出或其他在线资源中获取的——我没有自己编写(只是修改过),因此我很难诊断这个问题 任何帮助都将不胜感激 // apply effect to pages var $headereff

上周,我将正在开发的一个网站更新为最新的WordPress。所有的自定义JS都不再工作了,我也不知道为什么

即使我在部分中删除它以尝试隔离问题,我总是会得到“UncaughtTypeError:$不是函数”

我不知道是什么导致了这一切

就我所见,所有脚本都按预期加载

不幸的是,我的自定义文件中的所有JS都是从堆栈溢出或其他在线资源中获取的——我没有自己编写(只是修改过),因此我很难诊断这个问题

任何帮助都将不胜感激

// apply effect to pages

var $headereffect = $('.hero-effect');

$headereffect.waypoint(function (direction) {
   if (direction == 'down') {
   $headereffect.addClass('hero-effect-animation');
   } else {
   $headereffect.removeClass('hero-effect-animation');
   }

}, { offset:'1px' });



// apply effect to default page headers



var $headereffect = $('#page-header');

$headereffect.waypoint(function (direction) {
   if (direction == 'down') {
   $headereffect.addClass('hero-effect');
   } else {
   $headereffect.removeClass('hero-effect');
   }

}, { offset:'1px' });
我的猜测是使用jQuery而不是$,因为其他脚本库有时会使用后者,这会导致问题和冲突

所以

变成

var $headereffect = jQuery('.hero-effect');
这将解决当前问题,但其他问题也可能在稍后阶段提出。检查代码并确保使用一致的jQuery引用

可以找到jQuery方式处理$问题的选项。从实用的角度来看,可以使用jQuery的快捷方式将jQuery置于“无冲突”模式。在本例中,使用“$j”而不是默认的“$”:

最佳实践是将代码包装在立即调用的函数表达式中,将jQuery传递给它,并在内部使用$,如下所示:

( function( $ ) {
    // Your code goes here
} )( jQuery );

您必须在页面顶部包含您需要在custom.js文件中使用
jQuery
而不是
$
的内容。在某些地方,您已经在使用
jQuery
了,不知道为什么会进行下一次投票-最好有一个解释,这样我就可以知道下一次投票了。当我将前两个航路点更改为这个时,我会得到:
uncaughttypeerror:$不是t.trigger(custom.js?ver=5.3:54)t.trigger(custom.js?ver=5.3:8)处的t.handler[as callback](custom.js?ver=5.3:54)处的函数在i.flushTriggers(custom.js?ver=5.3:8)在custom.js?ver=5.3:8
我不明白为什么这两周前还能完美工作。。我在网站上看不到这个问题,它现在起作用了吗?嗨,戈兰-所以我刚刚把所有的美元都换成了jQuery,它似乎起作用了-但是,你认为这会在将来再次出现问题吗?很明显,我不想把它交给别人,然后它就崩溃了——你认为无冲突模式更好吗?是的,这是一个更好的方法。因此,您可以确保其他使用$作为引用的库不会与您的自定义代码发生冲突。此外,您是否知道是什么原因导致前面的方法突然不起作用?
var $j = jQuery.noConflict();
$j(function(){
    $j("#sidebar li a").hover(function(){
        $j(this).stop().animate({
            paddingLeft: "20px&"
        }, 400);
    }, function() {
        $j(this).stop().animate({
            paddingLeft: 0
        }, 400);
    });
});
( function( $ ) {
    // Your code goes here
} )( jQuery );