【问题标题】:Why do I need jquery.min.js vs just jquery.js for script to work?为什么我需要 jquery.min.js 而不是 jquery.js 才能使脚本工作?
【发布时间】:2025-12-02 04:25:01
【问题描述】:

我是 Wordpress 的新手,这一直困扰着我一段时间。我想知道为什么我试图包含的代码仅在我在“head”中包含 jquery.min.js 时才有效,尽管默认情况下子主题已经包含 jquery.js。下面我来解释一下。

我的“正文”末尾附近有一个脚本,用于指定画廊中的图像在将鼠标悬停在它们上方时不显示“固定”按钮:

<script type="text/javascript">
$(document).ready(function() {
$(".tiled-gallery-item a img").attr("nopin","nopin");
});
</script>

仅当我将其包含在“head”中时,此代码才有效(即,将 nopin 属性添加到相关的 img 标签中):

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript" /></script>

但是,从检查源来看,子主题已经包含 jquery.js:

<script type="text/javascript" src="http://blog.froy.com/wp-includes/js/jquery/jquery.js?ver=1.10.2"></script>
<script type="text/javascript" src="http://blog.froy.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1"></script>

为什么需要 jquery.min.js?我是 Wordpress 的新手,很困惑。我认为 jquery.min.js 和 jquery.js 没有功能上的区别。 jquery-migrate.min.js 是什么?

【问题讨论】:

  • 如果你的脚本是在添加 jquery 脚本之前添加的,那么它将无法工作
  • 你必须在包含 jquery 后包含你的脚本

标签: javascript jquery wordpress


【解决方案1】:

WordPress 带有内置的 jQuery,但默认情况下不加载它。这可能是因为您的主题已在functions.php 中应用wp_enqueue_script('jquery');

替换此默认行为的一个解决方案是将此 sn-p 添加到您的functions.php

function modify_jquery() {
    if (!is_admin()) {
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js', false, '1.8.1');
        wp_enqueue_script('jquery');
    }
}
add_action('init', 'modify_jquery');

另外,因为您使用的是 jQuery 版本 1.10.2jQuery migrate,用于检测和恢复自 1.9 版起已弃用和删除的 API 或功能。

【讨论】:

  • 你。是。惊人的。正是我需要开始的。希望我有更多的声誉可以投票。
【解决方案2】:

Felix 准确地提供了所需的东西。为了给未来的访客完整回答我的问题,让我具体解释一下。

基本上,无论您的主题如何,Wordpress 默认都包含 jQuery 库(我个人使用带有子主题的 Genesis 框架)。此外,默认情况下,Wordpress 将库设置为noConflict() 模式。这是为了防止与 WordPress 可以链接的其他 JavaScript 库的兼容性问题。

如果你想包含任何需要 jquery 的脚本,你需要使用wp_enqueue_script()

现在这是重要的部分。 如果您不想经历这些麻烦,并且想在 &lt;body&gt; 或其他地方的末尾包含一个简单、快速的脚本而无需要进入 functions.php 并使用 enqueue,$() 快捷方式替换为 jQuery()

就我而言,

<script type="text/javascript">
$(document).ready(function() {
$(".tiled-gallery-item a img").attr("nopin","nopin");
});
</script>

需要...

<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(".tiled-gallery-item a img").attr("nopin","nopin");
});
</script>

就是这样!我能够删除多余的 jquery.min.js 并简单地依赖 Wordpress 的默认 jQuery 库。

我通过阅读 thisthis 发现了这一点。您可以在这些链接中找到更多详细信息。

【讨论】:

  • 不推荐更改wordpress的默认jquery。
  • 对。这就是为什么我想找到一种方法来解决我的问题 - 删除 jquery.min.js 并依赖默认的 WP jquery。
  • 这就是为什么我要 +1 :)