我有代码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没有反应)
答案 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会对某些内部进行制动)。