避免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冲突的防弹方法的主要内容,如果未能解决你的问题,请参考以下文章