脚本引用导致冲突

时间:2012-01-22 12:42:04

标签: javascript jquery

我有代码1,它在头部执行:

<link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script class="jsbin" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>

然后我有代码2经过:

<script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
<script src="livesearch.js" type="text/javascript"></script>

问题是,当我把最后一个引用(代码2)放在第一个引用时不再有效... 我做错了什么?

(由于某种原因,代码2对jquery 1.7没有反应)

2 个答案:

答案 0 :(得分:5)

您需要的是:jQuery.noConflict

  

如果有必要,我们可以通过传递真实来释放jQuery名称   作为方法的参数。这很少是必要的,如果必须的话   这样做(例如,如果我们需要使用的多个版本   jQuery库在同一页面上)

例如:

<script class="jsbin" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="javascript">
// now you alias the v1.7 jQuery to jQuery17
jQuery17 = jQuery.noConfict(true);
</script>

<script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
<script type="javascript">
// now you alias the v1.4 jQuery to jQuery14
jQuery14 = jQuery.noConfict(true);
</script>

并将两部分代码放在不同的范围内。

(function($){
//put your codes here which need jQuery 1.7 version
.....
})(jQuery17);

(function($){
//put your codes here which need jQuery 1.4 version
.....
})(jQuery14);

答案 1 :(得分:1)

只需删除

<script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>

<script class="jsbin" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

来自你的代码。

实际上你用1.7.1包含jquery一次,用1.4.3包含一次。有jQuery.noConflict的解决方案 - 但请查看xdazz's answer

编辑:

因此,如果您尝试包含<script src="livesearch.js" type="text/javascript"></script>的库无效,则可能无法在1.7.1版本中实现 - 所以请查看作者网站/文档以获取更多信息,其中jquery -framework版本他/她做了实施。如果您知道这一点,那么必须坚持使用此版本,除非作者重新发布更新(尽管许多组件与版本无关,但有时jquery会对某些内部进行制动)。

相关问题