【问题标题】:Bullet proof way to avoid jquery conflicts on wordpress plugins避免wordpress插件上的jquery冲突的防弹方法
【发布时间】: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,而不会出现冲突问题。

谢谢

【问题讨论】:

    标签: wordpress plugins conflict jquery


    【解决方案1】:

    它不适用于闭包吗?

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

    【讨论】:

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

    阅读法典的这些部分:

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

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

    【讨论】:

    • 非常感谢您的回复,我会查看这些并报告
    猜你喜欢
    • 2013-03-09
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2014-10-01
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多