Javascript 特定于脚本的jQuery别名

Javascript 特定于脚本的jQuery别名,javascript,jquery,Javascript,Jquery,Wordpress以安全模式提供jQuery,这非常棒,但是我必须使用的第三方脚本使用了$别名,所以有一种方法可以将别名$转换为jQuery仅用于该脚本?(无法编辑脚本,因为它是第三方)将插件的初始化包装在 根据: $variable在JavaScript库中非常流行,如果您将另一个库与jQuery一起使用,则必须使jQuery不使用$with jQuery.noConflict()。然而,这将破坏我们的插件,因为它是在假定$jQuery函数的别名的情况下编写的。要与其他插件配合使用,并且仍

Wordpress以安全模式提供jQuery,这非常棒,但是我必须使用的第三方脚本使用了
$
别名,所以有一种方法可以将别名
$
转换为
jQuery
仅用于该脚本?(无法编辑脚本,因为它是第三方)

将插件的初始化包装在


根据:

$variable在JavaScript库中非常流行,如果您将另一个库与jQuery一起使用,则必须使jQuery不使用$with jQuery.noConflict()。然而,这将破坏我们的插件,因为它是在假定$jQuery函数的别名的情况下编写的。要与其他插件配合使用,并且仍然使用jQuery$别名,我们需要将所有代码放在立即调用的函数表达式中,然后传递函数jQuery,并命名参数

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

编写如下插件:

$.fn.doSomething = function(){
   // whatever
}
(function($){
    $.fn.doSomething = function(){
       // whatever
    }
})(jQuery)
将使它与在noConflict模式下使用jQuery的任何人都不兼容。它应该用这样的包装:

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

如果您的插件是前一种样式,请放弃它。

将插件的初始化封装在


根据:

$variable在JavaScript库中非常流行,如果您将另一个库与jQuery一起使用,则必须使jQuery不使用$with jQuery.noConflict()。然而,这将破坏我们的插件,因为它是在假定$jQuery函数的别名的情况下编写的。要与其他插件配合使用,并且仍然使用jQuery$别名,我们需要将所有代码放在立即调用的函数表达式中,然后传递函数jQuery,并命名参数

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

编写如下插件:

$.fn.doSomething = function(){
   // whatever
}
(function($){
    $.fn.doSomething = function(){
       // whatever
    }
})(jQuery)
将使它与在noConflict模式下使用jQuery的任何人都不兼容。它应该用这样的包装:

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

如果您的插件是前一种样式,请放弃它。

是干净的解决方案,如果您可以访问代码,则应使用该解决方案,但如果您无法访问它,则存在脏的解决方案

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

要在DOM中内联脚本时执行此操作,只需打开脚本标记进行重新分配,然后执行以下操作:

<script>$=jQuery;</script>
<script src="external_script"></script>
警告:如果
窗口中使用了$
,则此方法可能会中断脚本。如果同时另一个脚本将
$
重新分配给其他脚本,则异步加载脚本也可能不起作用。

是干净的解决方案,如果您有权访问代码,则应使用干净的解决方案,但如果您无权访问,则存在脏的解决方案

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

要在DOM中内联脚本时执行此操作,只需打开脚本标记进行重新分配,然后执行以下操作:

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

警告:如果
窗口中使用了$
,则此方法可能会中断脚本。如果脚本是异步加载的,如果另一个脚本重新分配“代码> $< /代码>到别的东西,那么它也可能不起作用。

一个不考虑重写<代码> $< /Cord>(并且失败时)的第三方脚本不是一个好的脚本……卡尔和安德烈加冈,我同意,但最糟糕的部分是:不幸的是,从PayZAudioApple第三方脚本中,不考虑重写<代码> $< /Case>(并且失败的时候)不是一个好的脚本……卡尔和安德烈加冈我同意,但最糟糕的部分是:不幸的是它来自PayZa集成APIAY,它不是这样工作的。我想很多人都误解了这个问题。@Karl AndréGagnon-我没有误解这个问题-我认为有些东西会起作用,但不会。无论如何,答案更新了。“如果你的插件是以前的样式,那就放弃它。”它是。。。一个非常好的建议,up votted,但我不能接受作为答案,因为它实际上并不能解决问题。@VictorAurélio-你能不能打开插件并将其包装在iLife中?@Jamiec作为临时解决方案我做了这件事,但我已经联系了开发人员来修复它。是的,它不是这样工作的。我想很多人都误解了这个问题。@Karl AndréGagnon-我没有误解这个问题-我认为有些东西会起作用,但不会。无论如何,答案更新了。“如果你的插件是以前的样式,那就放弃它。”它是。。。一个非常好的建议,up votted,但我不能接受作为答案,因为它实际上并不能解决问题。@VictorAurélio-你能不能打开插件并将其包装在iLife中?@Jamiec作为临时解决方案我这样做了,但我已经联系了开发人员来修复它。