같은 페이지에서 jQuery와 다른 라이브러리를 사용할 때 전역 이름 $의 정의가 가장 큰 논쟁과 갈등 지점이 되는 경우가 많습니다. jQuery는 jQuery 이름에 대한 별칭으로 $를 사용하고 jQuery가 노출하는 모든 기능에 이를 사용한다는 것은 잘 알려져 있지만, 다른 라이브러리, 특히 Prototype에서도 $ 이름을 사용합니다.
1. jQuery는 다른 라이브러리가 사용할 수 있도록 $ 식별자의 점유를 포기하는 $.noContric() 유틸리티 함수를 제공합니다.
이 함수의 구문은 다음과 같습니다.
$.noContribute(jqueryToo)
식별자 $의 제어권을 다른 라이브러리에 반환하여 페이지의 다른 라이브러리와 jQuery를 혼합할 수 있습니다. 함수가 실행되면 $identifier 대신 jQuery 식별자를 사용하여 jQuery 함수를 호출해야 합니다.
jQuery 식별자를 삭제할 수도 있습니다(선택 사항)
이 메소드는 jQuery가 포함된 후, 충돌하는 라이브러리가 포함되기 전에 호출되어야 합니다.
jQuery 식별자를 사용하더라도 $는 jQuery의 별칭이므로 $.noConflect()를 적용한 후에도 모든 jQuery 기능을 계속 사용할 수 있습니다.
var $j = jQuery;
2. 또 다른 일반적인 관용구는 $ 식별자가 jQuery 개체를 가리키는 범위가 지정된 환경을 만드는 것입니다. 이는 특히 플러그인 작성자의 경우 jQuery를 확장할 때 사용되는 일반적인 기술입니다. 페이지 개발자가 $.noConstrict()를 호출했는지 여부에 대한 모든 가정과 물론 페이지 개발자의 바람을 파괴하지 않기 위해 이 함수를 직접 호출할 수는 없습니다.
이 관용어는 다음과 같습니다:
(function($) { }) (jQuery);
(function($) { })
이 부분은 함수를 선언하고 이를 괄호로 묶어 표현식을 생성합니다. 이 표현식의 결과는 익명 함수에 대한 참조입니다. 이 함수는 단일 매개변수를 예상하고 함수 본문에서 이름을 $로 지정합니다. 함수에 전달된 값은 $ 식별자를 통해 참조될 수 있습니다. 매개변수 선언은 전역 범위에서 유사한 명명된 식별자보다 우선하므로 함수 외부에 정의된 모든 $value는 함수 내부에 전달된 매개변수로 대체됩니다.
(jQuery)
익명 함수에 대해 함수 호출을 실행하고 jQuery 객체를 매개변수로 전달합니다
$ 식별자가 Prototype이나 함수 외부의 다른 라이브러리에 정의되었는지 여부에 관계없이 항상 함수 본문 내부의 jQuery 객체를 가리킵니다.
이 트릭을 사용하면 외부에서 선언된 $를 함수 본문 내에서 사용할 수 없습니다.
3. 두 번째 사용법의 변형은 종종 준비된 핸들러 함수를 선언하는 데 사용되어 세 번째 구문
jQuery( function($){
})