特定于脚本的jQuery别名

时间:2015-07-10 14:14:00

标签: javascript jquery

Wordpress在安全模式下发布jQuery,这非常棒,但是我必须使用的第三方脚本使用$别名,因此$的方法是jQuery到{{ 1}}仅适用于该脚本? (不能编辑脚本,因为它的第三方)

2 个答案:

答案 0 :(得分:5)

将插件的初始化包装在IIFE

(function($){
   $('.some').pluginUsingDollarAsJQuery();
})(jQuery)

<击>

根据help pages for plugin authorship

  

$ variable在JavaScript库中非常流行,如果你在jQuery中使用另一个库,你将不得不让jQuery不使用$ with jQuery.noConflict()。但是,这会破坏我们的插件,因为它是在假设$是jQuery函数的别名的情况下编写的。为了与其他插件一起使用,并且仍然使用jQuery $别名,我们需要将所有代码放在Immediately Invoked Function Expression中,然后传递函数jQuery,并命名参数

这基本上归结为这样一个事实:无论是谁编写了你正在使用的插件,都没有做到这一点。

编写一个这样的插件:

$.fn.doSomething = function(){
   // whatever
}

会使它与noConflict模式下使用jQuery的任何人都不兼容。它应该包含在IIFE中,如下所示:

(function($){
    $.fn.doSomething = function(){
       // whatever
    }
})(jQuery)

如果您的插件是前一种风格,请抛弃它。

答案 1 :(得分:1)

Jamiec's answer是一个干净的解决方案,如果您有权访问该代码,则应该使用该解决方案,但如果您无法访问该代码,则会出现一个肮脏的解决方案。

您可以在加载脚本之前将$重新分配给jQuery。因此,当脚本初始化时,$ === jQuery

要在脚本在DOM中内联时执行此操作,只需在重新分配之前打开脚本标记:

<script>$=jQuery;</script>
<script src="external_script"></script>

如果您动态加载脚本(例如:jQuery.getScript),则可以在调用异步函数之前重新分配:

window.$ = jQuery;
jQuery.getScript('external_source');

警告:如果在其他位置使用window.$,此方法可能会破坏您的脚本。如果脚本是异步加载的话,如果另一个脚本将$重新分配给其他脚本,则它也可能无效。