2014-08-27 4 views
0

나는 새로운 JQuery와 프로그래머 해요, 여기 내 머리 코드 :충돌이

<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> 
:

<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> 

이 스크립트를 완벽하게 작동,하지만 난 페이지에 이러한 다른 세 개의 스크립트를 추가 할 때

체 콘솔 오류가 준 :에

Uncaught TypeError: undefined is not a function 

'$ (문서) .ready (myFunction이);' 선.

무엇이 오류입니까? 갈등 문제가 있습니까?

+0

세 개의 js 파일 중 하나만 사용할 수 있습니까? 그러면 다른 사람들이 무엇이 잘못되었을 지 짐작할 수 있습니다. –

+2

http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/ –

+0

스크립트가 완벽하게 작동합니까? 내 콘솔이'Uncaught SyntaxError : Unexpected token '을 반환합니다.)' – Kamil

답변

3

Prototype.js도 글로벌 $ 변수를 사용합니다. 당신은 그들이 대신 jQuery 변수를 사용하여 서로 충돌하지 않는지 확인해야합니다 당신은 또한 단지 모든 jQuery를 $jQuery로 사용 대체 할 수

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

을하지만, 위의 방법을 구현하고 유지하기 위해 일반적으로 간단합니다 .

+0

이제는 내 스크립트가 제대로 작동하지만 다른 것은 렌더링 문제가 있습니다. 라이트 박스는 페이지 하단에 표시됩니다. – Luca

+0

@PhantomFav jQuery를 사용하는 코드에는'jQuery'를 사용하고 Prototype을 사용하는 코드에는'Prototype'을 사용해야합니다. '$'는 충돌하기 때문에 절대 사용하지 마십시오. – tcooc

+0

죄송합니다. 내 CSS를 잊어 버렸습니다. 내 잘못입니다. 답변 해 주셔서 감사합니다. – Luca

6

jQuery에는 사용하려는 $이라는 함수가 정의되어 있습니다.

prototype.js$이라는 함수를 정의하고 jQuery의 함수를 덮어 씁니다.

$ 대신 jQuery 함수를 참조하려면 jQuery을 사용하십시오.

+1

그리고 ['jQuery.noConflict()'] (http://api.jquery.com/jquery.noconflict/)를 사용하여 jQuery가'$ '글로벌. – GolezTrol

+1

j는 소문자 여야합니다. – Quentin