0

再会

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

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

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

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

这是为什么?

谢谢

4

2 回答 2

2

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

于 2013-03-17T16:33:08.957 回答
1

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

$("p").hide();

...不会工作,因为 $ 不会代表 jQuery 对象。尝试像这样包装您的自定义代码,这是获取 $ 对象的标准方法(示例取自此页面):

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

这样做是因为几个不同的 JavaScript 库$用作“快捷方式”变量(例如MooTools),并且第三方 WordPress 插件和主题通常包含其他 JavaScript 库。$当 WordPress 将多个库加载到单个页面中时,放弃并让您准确指定您真正要使用的对象是一种确保冲突最少的方法。

所以,我想说确保 WordPress 的标准版本的 jQuery 可用于您的主题(可能wp_enqueue_script在您的 functions.php 中使用),如此处的提示一所示:

function my_init() {
    if (!is_admin()) {
        wp_enqueue_script('jquery');
    }
}
add_action('init', 'my_init');

...然后通过添加上面的“map-jQuery-back-to-$”包装方法在您自己的函数中使用它对于全面兼容是最好的。大多数当前需要 jQuery 的 WordPress 主题和插件都将被编写为将 jQuery 的发布版本与 WordPress 一起使用,您可能也应该这样做。

于 2013-03-17T16:40:15.147 回答