2013-03-17 90 views
0

好日子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时,我的自定义代码运行,但它打破了其他插件...

这是为什么?

谢谢

回答

1

您的自定义jQuery代码没有与WordPress包含的现有jQuery一起运行的原因可能是因为WordPress的jQuery设置为noconflict。 noconflict方法放弃了jQuery中使用的“$”快捷方式。这意味着依赖它的代码,例如

$("p").hide(); 

...将无法正常工作,因为$并不代表jQuery obejct。尝试包装你的自定义代码这样的,这是获得$对象返回的标准方式(从this page采取为例):因为有几个不同的JavaScript库使用$作为“捷径”可变

jQuery(function ($) { 
/* You can safely use $ in this code block to reference jQuery */ 
    $("p").hide(); 
}); 

这样做(例如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-$”包装方法在你自己的函数中最适合全面的兼容性。大多数当前的WordPress主题和需要jQuery的插件将被编写为使用WordPress的运输版本的jQuery,您应该也可以这样做。

+0

谢谢!非常感激!!! – 2013-03-17 16:50:36

2

jQuery 1.9.1弃用了很多功能。尝试使用jQuery Migrate 1.1.1或降级到1.8.3

+0

谢谢gmartellino - 不知道jQuery 1.9.1有兼容性问题 - 从现在开始使用1.8.3来保证安全。 – 2013-03-17 16:53:02