我是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?
答案 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库。