Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
getscript能否在jquery noconflict中运行导入的脚本?_Jquery_Jquery Plugins_Getscript - Fatal编程技术网

getscript能否在jquery noconflict中运行导入的脚本?

getscript能否在jquery noconflict中运行导入的脚本?,jquery,jquery-plugins,getscript,Jquery,Jquery Plugins,Getscript,假设我运行的jQuery版本没有如下冲突: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><script type="text/javascript">var jQuery191 = $.noConflict(true);</script> 脚本是使用jQuery191运行还是使用原始jQuery运行?或者这个逻辑是愚蠢

假设我运行的jQuery版本没有如下冲突:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><script type="text/javascript">var jQuery191 = $.noConflict(true);</script>
脚本是使用
jQuery191
运行还是使用原始
jQuery
运行?或者这个逻辑是愚蠢的。

在包装器(
(function(){…})(
)中,您将
jQuery
变量定义为全局范围内
jQuery191
变量的副本

这意味着
$.getScript
不使用该变量,但调用
jQuery.getScript
是可行的。 由于它是一个匿名函数,包装器中的
$
现在引用外部
$
变量(在本例中,是全局对象中的
$
)。 您可以通过将包装的第一个参数重命名为
$
来解决此问题:

(function ($) {
    $.getScript('foo.js');
})(window.jQuery191);
或者在包装器中添加以下内容:

var $ = jQuery

现在,
$
jQuery
都包含全局范围的
jQuery191
变量的副本。

getScript
只需加载脚本并将其添加到页面中,它根本不会影响脚本的行为。如果脚本通过其全局名称访问jQuery,那么它将找不到它(由于调用了
noConflict
),并且无法正确运行


如果可以,我建议在调用
noConflict
之前包含脚本,否则您必须修改脚本以在放置jQuery的地方查找jQuery(
jQuery191
)。

在您的情况下,它与原始jQuery一起运行,由于您从未将jQuery191版本设置为
$
,这是正确的,但这对于
foo.js
,并不重要-它仍然不受包含在页面中的上下文的影响。但是,$.getScript将获得将脚本附加到,导致它在全局范围内运行,
$
jQuery
不是jQuery 1.9.1
var $ = jQuery