美好的一天
我在我的header.php文件中包含了jquery,如下所示:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
但是当这样做时,它打破了我的主页滑块,它打破了我的谷歌地图终极插件和其他一些东西。当我排除它时,我的页面上没有运行自定义jquery ...只有滑块工作必须使用jquery ......
所以如果jquery已经在我的网站上运行了(因为我在主题中有jquery缓动等等),为什么自定义jquery代码我添加到我的文件中的标签不起作用?但是,当我像上面所说的那样包含jquery时,我的自定义代码会运行,但它会破坏其他插件......
为什么?
谢谢
答案 0 :(得分:2)
jQuery 1.9.1弃用了很多功能。尝试使用jQuery Migrate 1.1.1或降级到1.8.3
答案 1 :(得分:1)
您的自定义jQuery代码未运行WordPress现有的jQuery的原因可能是因为WordPress的jQuery设置为noconflict。 noconflict方法放弃了jQuery中使用的“$”快捷方式。这意味着依赖于它的代码,例如
$("p").hide();
...将无效,因为$不代表jQuery obejct。尝试包装这样的自定义代码,这是获取$ object的标准方法(示例来自this page):
jQuery(function ($) {
/* You can safely use $ in this code block to reference jQuery */
$("p").hide();
});
这样做是因为几个不同的JavaScript库使用$
作为“快捷”变量(例如MooTools),而第三方WordPress插件和主题通常包含其他JavaScript库。放弃$
并让您准确指定您真正想要使用的对象是一种确保在WordPress将多个库加载到单个页面时最小冲突的方法。
所以,我要说确保WordPress的标准版jQuery可用于你的主题(可能在你的functions.php中使用wp_enqueue_script
),如tip one here所示:
function my_init() {
if (!is_admin()) {
wp_enqueue_script('jquery');
}
}
add_action('init', 'my_init');
...然后通过在上面添加“map-jQuery-back-to-$”包装方法在您自己的函数中使用它将是最佳的全面兼容性。大多数当前需要jQuery的WordPress主题和插件都将被编写为使用带有WordPress的jQuery的发布版本,你应该也可以这样做。