2010-08-31 109 views
2
<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> 

我的代码不工作我不知道为什么? 有什么建议吗?Jquery和Protoype冲突

回答

4

您需要使用jQuery.noConflict()释放$回原型,像这样:

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

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

虽然jQuery的可以做的显示/隐藏,所以你可能不需要这两个库,这取决于你在做什么(例如,有用于jQuery的灯箱插件和用于原型的可滚动插件,所以你可以用任何方式使用单个库来实现所有功能)。

你也可以把它从$恢复通话的别名,它返回到jQuery的一个参考,所以你可以这样做:

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

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

一旦我有同样的问题,使用原型和jQuery的相同的页面,并指定jQuery.noConflict()函数,但我的东西没有淡入/淡出(东西是跳奇怪,有时只在第一个动画工作)。当我禁用Prototype时,我的jQuery代码完成了它应该做的事情。我得出的结论是,jQuery和Prototype具有相同的函数名称,并以某种方式导致冲突。

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