首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么头中没有加载jQuery 2.1?

为什么头中没有加载jQuery 2.1?
EN

WordPress Development用户
提问于 2015-11-08 13:12:26
回答 3查看 1.7K关注 0票数 1

因为我想使用jQuery 2.1而不是1.11,所以我首先必须注销jQuery。然后用新值注册它。:

代码语言:javascript
复制
add_action( 'wp_enqueue_scripts', 'add_scripts' );

function add_scripts() {
    wp_deregister_script('jquery');
    wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js', false, '2.1.0', false);
    wp_enqueue_script('jquery');
}

根据手册,这应该会在标题中加载脚本。但它是装在脚上的。为什么会这样呢?

我之所以这样问是因为我有一个插件,需要在头上有一些东西。因为jquery直到页脚才被加载,所以它会抛出一些错误。

PS。如果我这样做的话:

代码语言:javascript
复制
    wp_deregister_script('jquery');
    wp_register_script( 'jquery-2', 'http:...');
    wp_enqueue_script('jquery-2');

WP将不会加载任何内容-它完全崩溃。还有其他人经历过吗?

EN

回答 3

WordPress Development用户

回答已采纳

发布于 2015-11-08 15:32:15

从理论上讲,您编写的代码应该可以工作,在实际应用程序中,您缺少一些可能会影响代码工作方式的良好实践,因此最好通过一些故障排除来勾选清单中的所有内容。

通过取消注册jquery,您将同时删除jQuery内核和jQuery迁移javascripts,可能您想要做的是取消核心的注册,并保持jQuery迁移。

jQuery迁移包含旧的遗留jQuery代码,它将遗留东西的所有功能移植到新版本的jQuery上。

在您链接的Codex页面上,如果向下滚动,您可以找到一个集成javascripts的处理程序,您可以取消注册列表。

因此,您必须取消jquery-core的注册,而不是jquery,以保持某些功能的完整,这包括插件--它们可能会运行一些遗留的jQuery东西。

您不需要在最后一个参数中附加" false“,因为默认情况下它已经是false了,我还建议删除您的协议,这样可以确保如果您希望稍后切换到https,那么始终会向浏览器提供jQuery服务。

作为最后一步,当您在一个其他人的代码与您的代码一起运行的大环境中编码时,名称空间非常重要。对于我来说,add_scripts()似乎有点过于通用了,如果您要在functions.php文件中编写函数,尝试添加主题的名称,或者编写一些非常独特的东西,那么您可以确定,将来同一个函数不会与来自插件或工作文件中的其他函数发生冲突。

代码语言:javascript
复制
add_action( 'wp_enqueue_scripts', 'YOURTHEMENAME_scripts' );

function YOURTHEMENAME_scripts() {
    wp_deregister_script('jquery-core');
    wp_register_script('jquery-core', '//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js', false, '2.1.0');
    wp_enqueue_script('jquery-core');
}

请注意,Wordpress的加载顺序如下:

代码语言:javascript
复制
Core -> Plugins -> Theme

如果您试图从一个自定义插件中删除jQuery,那么您的主题可能就是接管并处理脚本队列。

如果在所有这些之后,您仍然将Javascript输入到页脚,那么您的header.phpfooter.php文件中出现了一些可怕的错误:其中一个菜鸟的原因可能是主题中wp_head()wp_footer()特定钩子的位置,我已经看过这么多次了,这很容易成为一种可能。

wp_head()是一个钩子,它为您添加元标记、css队列和js队列,最后一个标志参数设置为"false“。

wp_footer()是一个钩子,它关心向您添加JS的其余部分,最后一个标志参数设置为"true“,以及从各个插件生成的额外标记(以及来自WP核心的管理栏)。

重复检查钩子函数的位置,如果您的页脚中有wp_head(),那么很容易就可以将javascript队列添加到页脚中。

票数 3
EN

WordPress Development用户

发布于 2015-11-08 13:56:02

第一:您必须将jquery等内容放入使用wp_enqueue_scripts钩子调用的函数中。这样做吧:

代码语言:javascript
复制
add_action('wp_enqueue_scripts','jquery_2_loader');

function jquery_2_loader(){
//insert your jquery deregister and Register
}

第二个问题:许多插件依赖于队列jquery。所以如果你取消它的注册,那些插件就不能再使用它了。

票数 1
EN

WordPress Development用户

发布于 2015-11-08 15:22:55

正确的是,将false传递给wp_register_script函数调用应该确保脚本被放在页面的标题中。您有其他插件可以修改脚本的位置吗?例如,像自动优化这样的插件将尝试“智能”地将脚本放在脚注中,以便在可能的情况下加快加载速度。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/207967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档