Jquery和Prototype Conflict

时间:2010-08-31 23:00:46

标签: prototypejs jquery

<blink>
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/prototype/1.6.1/prototype.js'></script>
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js'></script>
<script type='text/javascript' src='/lightview.js'></script>
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script> 
<script type="text/javascript" src="/photography/js/scrollable.js"></script>
<script>
// Use jQuery via jQuery(...)
jQuery(document).ready(function(){
jQuery("div.scrollable").hide();
});

// Use Prototype with $(...), etc.
$('div.box').hide();
</script>
</blink>

我的代码不工作我不知道为什么? 有什么建议吗?

2 个答案:

答案 0 :(得分:4)

您需要使用jQuery.noConflict()$发布回原型,如下所示:

jQuery.noConflict(); //restore $ to prototype
jQuery(document).ready(function(){
  jQuery("div.scrollable").hide();
});

$('div.box').hide();

虽然jQuery可以显示/隐藏,但你可能不需要这两个库,这取决于你正在做什么(例如,有jQuery的lightbox插件和原型的可滚动插件,所以你可以使用任何一种方式使用一个单独的图书馆。)

你也可以从$恢复调用中给它一个别名,它会返回对jQuery的引用,所以你可以这样做:

var $j = jQuery.noConflict(); //restore $ to prototype
$j(function(){
  $j("div.scrollable").hide();
});

$('div.box').hide();

答案 1 :(得分:0)

一旦我遇到同样的问题,在同一页面上使用Prototype和jQuery,并指定jQuery.noConflict()函数,但我的东西没有淡入/淡出正确(东西跳得很奇怪,有时只能用于第一个动画)。当我禁用Prototype时,我的jQuery代码完全按照它应该做的去做。我得出结论,jQuery和Prototype具有相同的函数名称,这些会以某种方式引起冲突。

暂时禁用Prototype并查看您的jQuery代码是否按预期执行。