【问题标题】:Switching to jQuery noconflict, how do I fix code?切换到 jQuery noconflict,如何修复代码?
【发布时间】:2012-07-07 23:05:03
【问题描述】:

我刚刚将我的 wordpress 主题加载 jQuery 的方式从手动加载 google 的版本转换为对 wordpress 附带的版本进行排队。 wordpress 附带的版本中包含“noconflict()”,因此 $ 快捷方式不再适用于我的所有 jQuery,而是我需要在它的位置使用“jQuery”。

我在页面上有很多 .js 脚本和很多 jquery 设置初始化,但现在都不起作用,因为它们都使用简写 $。

我的问题是,假设我需要使用 wordpress 附带的 noconflict 版本,修复我的速记代码的最佳方法是什么?

我应该在每个脚本的顶部添加这样的一行吗?

jQuery(document).ready(function($) {

或者我应该“在文件中查找”所有 $ 并用 jQuery 替换?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    Wordpress 推荐:不错的阅读http://codex.wordpress.org/Function_Reference/wp_enqueue_script#jQuery_noConflict_wrappers

    http://api.jquery.com/jQuery.noConflict/

    代码

    (function($) {
        // $() will work as an alias for jQuery() inside of this function
    })(jQuery);
    

    【讨论】:

      【解决方案2】:

      您可以将jQuery 对象和您想在沙箱(函数)内使用的任何其他API\对象传递给立即执行的匿名函数:

      (function($, window, undefined) {
      
      
      }(jQuery, window));
      

      通过锁定 jQueryundefined 和任何其他对您的代码至关重要的 API 的实现,这减少了代码冲突的可能性。

      【讨论】:

      • 啊——太棒了——这是保护undefined的一种方式,我以前从未见过。
      • @AdamRackis 是的,我第一次看到它被使用是在 jQuery 源代码中code.jquery.com/jquery-latest.js
      【解决方案3】:

      您可以使用立即执行的函数来创建一个名为$ 的变量,该变量设置为jQuery。这可以模拟您在切换到noconflict 之前的行为:

      (function(){ 
      
          var $ = jQuery;
      
          //now use $ as you always have
      
      })();
      

      (function($){ 
      
          //now use $ as you always have
      
      })(jQuery);
      

      【讨论】:

        猜你喜欢
        • 2013-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多