Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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
Javascript 如果在一个页面中包含两个版本的jQuery,如何将插件限制为其中一个?_Javascript_Jquery_Jquery Plugins_Fancybox - Fatal编程技术网

Javascript 如果在一个页面中包含两个版本的jQuery,如何将插件限制为其中一个?

Javascript 如果在一个页面中包含两个版本的jQuery,如何将插件限制为其中一个?,javascript,jquery,jquery-plugins,fancybox,Javascript,Jquery,Jquery Plugins,Fancybox,所以这个问题并不像一开始听起来那么疯狂。我正在开发一段javascript代码,将其放入我的客户机页面。我担心的是他们是否在他们的网站上使用了另一个版本的jQuery 我从报纸上知道这样的事情应该行得通 var dom = {}; dom.query = jQuery.noConflict(true); 问题是我还使用了一些jquery插件,即和。那么,我如何确保我的jQuery版本是唯一可以使用这些插件的版本呢。我不希望发生冲突,如果我们的一个客户恰好在他们的页面中使用相同的,但不同的版本

所以这个问题并不像一开始听起来那么疯狂。我正在开发一段javascript代码,将其放入我的客户机页面。我担心的是他们是否在他们的网站上使用了另一个版本的jQuery

我从报纸上知道这样的事情应该行得通

var dom = {};
dom.query = jQuery.noConflict(true);
问题是我还使用了一些jquery插件,即和。那么,我如何确保我的jQuery版本是唯一可以使用这些插件的版本呢。我不希望发生冲突,如果我们的一个客户恰好在他们的页面中使用相同的,但不同的版本


我现在能想到的唯一确定的方法是修改插件,使它们只调用dom.query,这是一个可以使用的技巧。如果您的jQuery版本是第二个加载的版本,那么在加载之前,您需要首先移动到安全版本,类似这样

<script type="text/javascript">
    (function($){
       var theirs_jquery = $;
    })(jQuery);
</script>

(函数($){
var\u jquery=$;
})(jQuery);
然后添加jQuery版本脚本include标记

<script src="link/to/my/jquery.js"></script>
 <!-- add your plugins -->
<script src="link/to/my/jquery/plugins/plugin1.js"></script>
<script src="link/to/my/jquery/plugins/plugin2.js"></script>

然后添加另一个脚本块,如下所示

<script type="text/javascript">
(function(){
    var $$ = jQuery; // this is your shortcut
    var $ = theirs_jquery; // put back their version
})(jQuery);
</script>

(功能(){
var$$=jQuery;//这是您的快捷方式
var$=他们的\u jquery;//放回他们的版本
})(jQuery);
在此之后,您可以使用$$shortcut访问jquery版本

(function($) {        

})(dom);
帮你接电话

这将dom映射到$,只替换任何外部$定义中的代码


但我不确定这是否适用于两个不同的jQuery,也许jQuery不能与其他jQuery版本共存。

它们有什么版本,您希望使用什么版本?我冒昧猜测一下-库的大部分是向后兼容的,因此运行新版本可能不会完全破坏性。Mootools 1.3+Mootools 1.2不能协同工作。试试看!如果您继承了javascript对象,那么您可以像重写方法时一样识别此模式,但您也需要保留基本对象方法来执行?我还需要单独的脚本标签吗?我有一些javascript将我的插件添加到文档中,这样我就可以将它们保存在另一个文件中。我可以用includeJsFile函数编写代码吗?[A1]我想你不必这样做,不管怎样,你只需几步就可以返回$shortcut到它。[A2]你不必单独创建脚本标记,只需将它们括在(function(tolocal){/*use to local here*/})(global)中即可;[A3]是的,如果将其实现为同步脚本加载,则可以。在需要执行或解析代码之前,您不能允许执行或解析代码。这是真的,但之后您需要更改插件脚本文件