对于我的生活,我无法弄清楚如何让jQuery.noConflict()解决因在我的网站上需要两个不同版本的jQuery而导致的问题。我在网上阅读了大量文章,并在本网站上阅读了其他人的问题和答案,但似乎没有任何工作,我无法弄清楚为什么,尽管我的情况与其他人有点不同,我和# 39;读过。
让我试着解释一下我的情况以及我尝试过的事情。我有几个不同的插件需要jQuery 1.4.2,并且不能使用更高的任何东西。我有一个使用更新版本jQuery 1.7.1的插件。较旧的插件和一个较新的插件需要一个$(document).ready(function()来初始化。我感觉这就是我的麻烦所在。似乎我需要有2个$(文件)实例。 ready(function(),每个都使用不同的jQuery库,但我不确定如何做到这一点。(这是我所说的部分使我的情况与其他人有点不同,我已经阅读。)
以下是基本设置:
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/plugin1.js"></script>
<script type="text/javascript" src="js/plugin2.js"></script>
<script type="text/javascript" src="js/plugin3.js"></script>
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/plugin4.js"></script>
现在我需要一个$(document).ready(function()来初始化和启动插件。由于plugin1,plugin2和plugin3使用jQuery 1.4.2,而plugin4需要jQuery 1.7.1,我认为我需要使用两个不同的$(document).ready(function()实例。首先我尝试了这种方法,这是一些网站如何描述使用noConflict()的正确方法:
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script>var jQuery1 = jQuery.noConflict( true );</script>
<script type="text/javascript" src="js/plugin1.js"></script>
<script type="text/javascript" src="js/plugin2.js"></script>
<script type="text/javascript" src="js/plugin3.js"></script>
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script>var jQuery2 = jQuery.noConflict( true );</script>
<script type="text/javascript" src="js/plugin4.js"></script>
jQuery1(document).ready( function(){
// initialize plugins 1, 2, and 3 here using jQuery1 instead of $
});
jQuery2(document).ready( function(){
// initialize plugin 4 here using jQuery2 instead of $
});
这种方法本身并不起作用。然后我进入plugin4.js并将$的所有实例更改为jQuery2。这也没有用。我没有使用布尔值true尝试noConflict。没有工作。谁能告诉我我做错了什么?我是否需要进入plugin1.js,plugin2.js和plugin3.js并将$的所有实例更改为jQuery1?我不是100%关于noConflict()如何工作,所以我不确定这是否有必要。但是,我希望我不必这样做,因为plugin3.js已被混淆,所以我无论如何都无法做到。如果有人可以提供帮助,我们将不胜感激。
答案 0 :(得分:2)
我不认为你真的想在这里使用noConflict
,因为插件都需要访问jQuery
。您只需按正确的顺序运行所有内容并保持对已加载的jQuery版本的引用。
此外,ready
事件处理程序会传递对jQuery的引用,因此您可以根据需要为其命名(最好是$
)。
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script>var jQuery1 = jQuery;</script>
<script type="text/javascript" src="js/plugin1.js"></script>
<script type="text/javascript" src="js/plugin2.js"></script>
<script type="text/javascript" src="js/plugin3.js"></script>
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script>var jQuery2 = jQuery;</script>
<script type="text/javascript" src="js/plugin4.js"></script>
<script>
jQuery1(function($){
// initialize plugins 1, 2, and 3 here using $
});
jQuery2(function($){
// initialize plugin 4 here using $
});
</script>