jQuery打破了我的wordpress网站

时间:2013-03-17 16:31:45

标签: jquery wordpress

美好的一天

我在我的header.php文件中包含了jquery,如下所示:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>

但是当这样做时,它打破了我的主页滑块,它打破了我的谷歌地图终极插件和其他一些东西。当我排除它时,我的页面上没有运行自定义jquery ...只有滑块工作必须使用jquery ......

所以如果jquery已经在我的网站上运行了(因为我在主题中有jquery缓动等等),为什么自定义jquery代码我添加到我的文件中的标签不起作用?但是,当我像上面所说的那样包含jquery时,我的自定义代码会运行,但它会破坏其他插件......

为什么?

谢谢

2 个答案:

答案 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的发布版本,你应该也可以这样做。