>  기사  >  웹 프론트엔드  >  jQuery에서 noContribute() 사용법 공유

jQuery에서 noContribute() 사용법 공유

巴扎黑
巴扎黑원래의
2017-06-20 15:14:44939검색

이 글은 주로 jQuery에서 noContribute()의 사용법을 소개합니다. noContribute()의 기능, 정의 및 관련 사용법을 예제와 함께 분석합니다. 도움이 필요한 친구들이 참고할 수 있습니다. ) jQuery에서 예제가 포함되어 있습니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

jQuery는 기본적으로 "$"

연산자

를 사용합니다. $ 기호는 단지 window.jQuery 객체인 jQuery.noConflect()에 대한 참조일 뿐입니다. 그것을 구현한 첫 번째 라이브러리입니다. 이는 jQuery가 다른 라이브러리의 $object와 충돌하지 않도록 하는 데 도움이 됩니다. 이 함수를 실행한 후에는 jQuery 변수를 사용하여 jQuery 개체에만 액세스할 수 있습니다. 예를 들어 $("p p")를 사용하는 경우에는 jQuery("p p")로 바꿔야 합니다.

1. "$" 연산자

1. jQuery는 기본적으로 "$" 연산자를 사용하며 프로토타입과 같은 다른 프레임워크도 "$"를 사용합니다. " $"사용권한입니다. 이 상황은 이해하기 쉽습니다. 결국 JS는 위에서 아래로 실행됩니다.

2. "$"를 사용하는 다른 라이브러리보다 먼저 jQuery가 도입되면 jQuery는 "$"를 차지하지 않습니다.

팁: 이 방법은 다른

JavaScript

라이브러리가 해당 기능에 $를 사용할 때 유용합니다. 우리 모두는 jquery에서 변수를 가져올 때 $를 사용하지만, $ 기호를 동시에 참조하려는 경우 이를 방지하기 위해 문제가 발생합니다. jquery는 nocon conflict를 도입했습니다. ()

2. jQuery.noConfluence

의 정의
jQuery.noConstrict 메소드에는 $ 참조를 넘겨줄지 여부와 jQuery 객체 자체를 넘겨줄지 여부를 결정하는 선택적 부울 매개변수가 포함되어 있습니다.


jQuery.noConflict([removeAll])

함수 참고:

기본적으로 noConstrict를 실행하면 $ 변수의 제어권이 $를 생성하는 첫 번째 라이브러리로 전송됩니다. RemoveAll이 true로 설정된 경우 noConstrict를 실행하면 $ 및 jQuery 객체의 모든 제어권이 전송됩니다. 이를 생성하는 첫 번째 라이브러리로 이동합니다.

3. jQuery.noCon conflict 소스 코드 분석

jQuery 소스 코드 시작 부분에서 가장 먼저 해야 할 일은 다음과 같습니다.


// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,

jQuery가 윈도우 환경을 매핑하는 것은 이해하기 쉽습니다. 두 개의 개인 변수 jQuery 및 $ 객체를 사용하여 변수를 강제로 덮어쓰는 것을 방지합니다. noContribute 메소드가 호출되면 _jQuery, _$, jQuery, $의 차이를 이용하여 제어 전달 방식을 결정합니다. 구체적인 코드는 다음과 같습니다.

noConflict: function( deep ) {
 if ( window.$ === jQuery ) {
 window.$ = _$;
 }
 if ( deep && window.jQuery === jQuery ) {
 window.jQuery = _jQuery;
 }
 return jQuery;
}

위에서 언급한 매개변수를 다시 살펴보겠습니다. 문제는 deep이 설정되지 않으면 _$가 window.$를 덮어쓰게 된다는 점입니다. 이때 jQuery 별칭 $는 유효하지 않게 되지만 jQuery 자체는 그대로 유지됩니다. 다른 라이브러리나 코드가 $ 변수를 재정의하는 경우 해당 변수에 대한 제어가 완전히 이전됩니다. 반면 deep을 true로 설정하면 _jQuery가 window.jQuery를 덮어쓰게 되며 $와 jQuery가 모두 유효하지 않게 됩니다.
이 작업의 장점은 혼합 프레임워크나 여러 버전의 jQuery가 공존하는 등 충돌이 심한 실행 환경에 관계없이 noConfluence 메서드에서 제공하는 핸드오버 메커니즘과 발견되지 않은 jQuery 개체를 반환한다는 사실로 인해 변수 매핑을 통해 완전히 해결할 수 있습니다.


4. jQuery.noConstrict 인스턴스

1. $가 참조하는 객체를 원래 객체에 다시 매핑합니다.

jQuery.noConflict();
jQuery("p p").hide(); // 使用 jQuery
$("content").style.display = "none"; // 使用其他库的 $()

2. 별칭 $의 사용을 복원한 다음 함수를 생성하고 실행합니다. $ 함수의 역할은 여전히 ​​도메인에서 jQuery의 별칭으로 사용됩니다. 이 함수에서는 원래 $ 객체가 유효하지 않습니다. 이 기능은 다른 라이브러리에 의존하지 않는 대부분의 플러그인에 매우 효과적입니다:

jQuery.noConflict();
(function($) { 
 $(function() {
  // 使用 $ 作为 jQuery 别名的代码
 });
})(jQuery);
... // 其他用 $ 作为别名的库的代码

3. jQuery.noConstrict()를 축약된 Ready와 결합하여 코드를 더 간결하게 만들 수 있습니다:

jQuery.noConflict()(function(){
  // 使用 jQuery 的代码
});
... // 其他库使用 $ 做别名的代码

4. 다음 라이브러리에서 jQuery 개체를 사용하려면 새 별칭을 만듭니다.

var j = jQuery.noConflict();
j("p p").hide();  // 基于 jQuery 的代码
$("content").style.display = "none";// 基于其他库的 $() 代码

5 jQuery를 새
네임스페이스

로 완전히 이동합니다.

var dom = {};
dom.query = jQuery.noConflict(true);
//结果:
dom.query("p p").hide();  // 新 jQuery 的代码
$("content").style.display = "none";  // 另一个库 $() 的代码
jQuery("p > p").hide();  // 另一个版本 jQuery 的代码

위 내용은 jQuery에서 noContribute() 사용법 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.