与jquery脚本冲突

时间:2014-08-27 21:20:16

标签: javascript jquery function

我是一名新的JQuery程序员,这是我的主要代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script>
  function myfunction(){
    $("button").click(function(){
      $("p").hide();
    };
  });
  $(document).ready(myfunction);
</script>

这个脚本运行完美,但是当我在页面中添加其他三个脚本时:

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

控制台错误给了我:

 Uncaught TypeError: undefined is not a function 

on'$(document).ready(myfunction);'线。

错误是什么?是冲突问题吗?

2 个答案:

答案 0 :(得分:6)

jQuery 定义了您尝试使用的名为$的函数。

prototype.js 还定义了一个名为$的函数,并从jQuery中覆盖了该函数。

使用jQuery来引用jQuery函数而不是$

答案 1 :(得分:3)

Prototype.js也使用全局$变量。您需要确保使用jQuery变量确保彼此之间不会发生冲突:

// wrap it up
(function($) {
  function myfunction() {
    $("button").click(function(){
      $("p").hide();
    });
  };
  $(document).ready(myfunction);
})(jQuery);

您也可以将所有jQuery $用法替换为jQuery,但上述方法通常更易于实现和维护。