7

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

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

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

我总是设置和选项或包含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 或不我知道它是自动安装的,但有些用户删除了它,这适用于某些人但不是全部。

如果您包含 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,而不会出现冲突问题。

谢谢

4

2 回答 2

8

它不适用于闭包吗?

(function($){
    // your plugin code
})(jQuery);
于 2012-09-10T09:58:13.940 回答
1

阅读法典的这些部分:

您应该使用wp_enqueue_scriptshook 而不是init.

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

于 2012-09-10T10:07:55.183 回答