这个JQuery是从哪里来的?

时间:2018-02-24 作者:Henry

我对我的函数中的这个命令感到困惑。php文件:

function Remove_JQuery_Migrate( &$scripts) {
    if(!is_admin()) {
        $scripts->remove( \'jquery\');
        $scripts->add( \'jquery\', false, array( \'jquery-core\' ), \'3.2.1\' );
    }
}
add_filter( \'wp_default_scripts\', \'Remove_JQuery_Migrate\' );
我知道这会在我的整个网站上加载JQuery,但奇怪的是,如果我更改JQuery的版本,它不会更新。

如果我更改任何其他版本。css或。js文件,强制更新,但不会更新JQuery的版本。

我反复尝试清除缓存(我使用CloudFlare、maxCDN和W3TC),但没有任何乐趣。

有人知道我怎么解决这个问题吗?

我的客户面临的问题是,如果你点击我的网站并选择任何事件,你会注意到下拉列表不起作用。

https://infosec-conferences.com/

开发人员控制台显示错误:

Uncaught TypeError: $ is not a function
我确信这个错误是因为JQuery没有被正确调用。。。

我该怎么办?

1 个回复
SO网友:Jacob Peattie

我知道这会在我的整个网站上加载JQuery,但奇怪的是,如果我更改JQuery的版本,它不会更新。

这并不奇怪。您不能通过更改version参数来加载jQuery的任意版本。从documentation for wp_enqueue_script(), 该版本号为:

字符串,指定脚本版本号(如果有),该版本号作为查询字符串添加到URL中,用于缓存破坏。如果版本设置为false,则会自动添加与当前安装的WordPress版本相同的版本号。如果设置为null,则不添加任何版本。

因此,这只是为了告诉WordPress要将哪个版本号附加到URL。如果你正在加载一个已经注册的脚本,它只会加载与WordPress捆绑的版本(当前1.12.4).

但是您的问题与正在加载的jQuery版本无关。问题是WordPress以“无冲突”模式运行jQuery。这只意味着jQuery没有分配给$. 相反,您需要使用jQuery. 因此,如果您在WordPress中运行jQuery代码,您需要替换$ 具有jQuery, 用以下方式包装代码:

(function($) {
// Your code here
})(jQuery)
这将使jQuery作为$ 为您的代码。

结束