为什么我需要jquery.min.js vs jquery.js才能使脚本正常工作?

时间:2014-02-22 08:26:22

标签: javascript jquery wordpress

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

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

<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?

2 个答案:

答案 0 :(得分:3)

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

中应用functions.php

替换此默认行为的一种解决方案是将此代码段添加到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.2,所以此处使用jQuery migrate来检测和恢复自版本1.9起已弃用和删除的API或功能。

答案 1 :(得分:1)

菲利克斯提供了所需的确切内容。为了完整回答我未来访问者的问题,请让我详细说明一下。

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

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

现在这是重要的部分。如果您不想解决问题,并希望在<body>或其他地方的末尾添加一个简单,快速的脚本无需进入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来解决这个问题。您可以在这些链接中找到更多详细信息。