避免wordpress插件上的jquery冲突的防弹方法

Posted

技术标签:

【中文标题】避免wordpress插件上的jquery冲突的防弹方法【英文标题】:Bullet proof way to avoid jquery conflicts on wordpress plugins 【发布时间】:2012-09-03 02:41:05 【问题描述】:

我一直在开发 wordpress 插件一段时间,我的所有插件似乎总是遇到以下问题 Jquery 冲突问题。

我已经尝试了很多不同的方法来避免这些问题,但我总是让用户联系我说,当他们从我的插件中安装了一个插件时,它阻止了另一个插件的工作啊啊啊啊。

我真的很想解决这个问题,因为我知道这对人们来说是多么令人沮丧。

我总是设置和选项或包含 wordpresses jquery,下面只是一个不工作的代码示例。

add_action( 'init', array( $this, 'include_jquery' ) );

function include_jquery()

                   wp_deregister_script('jquery');
                   wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"), false, '1.7.1');
                   wp_enqueue_script('jquery');

            

好的,所以在出现此问题后,我现在在插件管理员中有一个选择选项来切换是或否以包含 jquery 或不包含 jquery 我知道它是自动安装的,但有些用户删除了它,这适用于某些人但不是全部。

如果您包含 wordpress jquery,我知道您必须使用以下内容运行您的 jquery。

jQuery(document).ready(function ($) 

jQuery 代替美元符号 $

我理解并且使用过 jquery 没有冲突,并且尝试并测试了一些(如果不是全部) http://api.jquery.com/jQuery.noConflict/

$.noConflict();
  jQuery(document).ready(function($) 
    // Code that uses jQuery's $ can follow here.
  );

这与其他方法一样适用于某些但并非所有用户,但仍会与某些用户发生冲突。

我希望通过这篇文章,我们中的一些 wordpress 插件开发人员可以提供帮助并发布一种防弹方法,以便在我们的插件中使用 wordpress 和 jquery,而不会出现冲突问题。

谢谢

【问题讨论】:

【参考方案1】:

它不适用于闭包吗?

(function($)
    // your plugin code
)(jQuery);

【讨论】:

这绝对有效,我不明白这个问题?添加一个窗口和 undefined 作为自调用函数的参数,你就可以开始了!【参考方案2】:

阅读法典的这些部分:

Load a default WordPress script from a non-default location

jQuery noConflict wrappers

你应该使用wp_enqueue_scripts钩子而不是init

您应该使用jQuery.noConflict(); 而不是$.noConflict();

【讨论】:

非常感谢您的回复,我会查看这些并报告

以上是关于避免wordpress插件上的jquery冲突的防弹方法的主要内容,如果未能解决你的问题,请参考以下文章

我是不是使用 jQuery noconflict 来避免插件冲突?

wordpress中的冲突革命滑块和jquery文件

Wordpress 插件错误 - 未定义 jQuery

jQuery插件冲突 - 请协助

关闭引导弹出事件与 jquery 验证插件冲突

jQuery封装函数