我是一名新的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);'线。
错误是什么?是冲突问题吗?
答案 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
,但上述方法通常更易于实现和维护。