为什么prototype.js会干扰无关的javascript操作?

时间:2010-11-09 02:55:09

标签: javascript jquery html prototypejs conflict

建立网站。当我订购像这样的标签时,LightCycle可以工作,但Lightbox不能:

Lightcycle正常工作,Lightbox不会:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>    
<script type="text/javascript" src="./js/prototype.js"></script>

当我这样订购时,Lightbox可以工作,但LightCycle不能:

灯箱工作正常,LightCycle没有:

<script type="text/javascript" src="./js/prototype.js"></script>    
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

令人沮丧。

4 个答案:

答案 0 :(得分:8)

您遇到了冲突,因为两个库都使用$快捷方式。查看jQuery的noconflict特性或等效的原型。

您可以在此处阅读更多内容:http://docs.jquery.com/Using_jQuery_with_Other_Libraries

答案 1 :(得分:2)

因为他们使用相同的$简写。

尝试以下方法:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">jQuery.noConflict();</script>
<script type="text/javascript" src="./js/prototype.js"></script>

答案 2 :(得分:0)

拨打jQuery.noConflict()是否可以解决此问题?如果您错过$快捷方式,还可以在on函数中为jQuery添加别名:

 var $j = jQuery.noConflict();

参考文献:

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

http://samsami2u.wordpress.com/2009/03/14/prototypejs-jqueryjs-conflict-and-resolution/

答案 3 :(得分:0)

所以使用Surreal Dreams重新污染,我实现了这个:

<script src="./prototype.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

   <script>
     var $j = jQuery.noConflict();

     // Use jQuery via $j(...)
     $j(document).ready(function(){
       $j("div").hide();
     });

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


<script type="text/javascript" src="./js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="./js/lightbox.js"></script> 

<script type="text/javascript" src="http://malsup.github.com/chili-1.7.pack.js"></script>
<script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.lite.1.0.min.js"></script>

<script type="text/javascript">

$(function() {
    $('#slideshow1').cycle({
        delay: 2000,
        speed: 1000,
    });


});

</script>

下一个浮现在脑海中的问题是用什么代替'someid'。我假设'#slideshow1'。但是当我这样做时显示的只是一个简单的黑页。烦。