2011-08-03 2 views
2

jquery를 사용하는 Redmine 플러그인을 만들려고합니다.Redmine plugin에 jquery 포함하기

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

Uncaught TypeError: Cannot call method 'hasChildNodes' of undefined 
prototype.js:5734 
Uncaught TypeError: Object [object Object] has no method 'dispatchEvent' 
prototype.js:828 
Uncaught TypeError: Object [object Object] has no method 'attachEvent' 

뷰가 훅입니다 : 내가보기에 다음 줄을 추가 할 때

나는, 충돌을 얻을.

<script src="">을 제거하면 작동하지만 jQuery를 사용할 수 없습니다.

답변

7

프로토 타입 라이브러리도 표시됩니다. 일반적으로 라이브러리는 자동으로 $ 변수에 할당하여 전역 범위에로드합니다.

jQuery를 작동 시키려면 jQuery를로드 한 후에 $.noConflict();을 추가하십시오 (jQuery API에서 noConflict 참조). 그러면 jQuery가 $에서 언로드되고 이전의 프로토 타입 (프로토 타입)으로 재 할당됩니다.

그런 다음 jQuery 개체를 사용하고 $ 바로 가기가 아닌 jQuery에 액세스합니다. 또한

var $j = $.noConflict(); // Then use $j instead of $ 

익명 함수를 만들 수 있으며, 지정 : 당신이 정말로 (예를 들어, $j을) 바로 가기 변수를 사용하고자하는 경우

jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    }); 

, 당신은 noConflict를 수행 할 때 할당 할 수 있습니다 그 안에 $에 대한 jQuery. 이것은 단지 함수의 범위 내에서 수행 (그래서 프로토 타입 범위 밖에서 여전히 $입니다)입니다 :

(function($) { 
    $(function() { 
    // more code using $ as alias to jQuery 
    }); 
})(jQuery); 

이 모든 (그리고 다른 몇 가지 예)가 noConflict 페이지에 표시됩니다

이 - 그래서 당신은 할 수 있습니다 거기 봐.

+0

자세한 설명을 읽어 주셔서 감사합니다! – user852689