> 웹 프론트엔드 > JS 튜토리얼 > jQuery와 다른 라이브러리 간의 충돌에 대한 솔루션_jquery

jQuery와 다른 라이브러리 간의 충돌에 대한 솔루션_jquery

WBOY
풀어 주다: 2016-05-16 18:24:29
원래의
1123명이 탐색했습니다.

(참고: 기본적으로 jQuery는 $를 약어로 사용합니다.)
jQuery 클래스 라이브러리가 다른 클래스 라이브러리와 충돌하는 경우 jQuerynoConflect() 함수를 사용하여 $ 변수 제어를 다른 라이브러리로 전달할 수 있습니다. 아래의 작은 코드 조각을 살펴보세요


JsCOM.js 라이브러리에 그런 함수가 있다고 가정해보세요

코드 복사 코드는 다음과 같습니다.

function $(objName) {
if (document.getElementById) {
return eval(' ​​document.getElementById("' objName '")')
}
else {
return eval("document.all." objName)
}

여러분 jQuery에 그런 함수가 있다는 것을 알고 충돌을 일으키지 않기 위해 jQuery의 변수 $에 대한 제어권을 다른 자바스크립트 라이브러리에 넘깁니다
복사 code 코드는 다음과 같습니다.

jQuery.noContribute() //변수 $의 제어권을 JsCOM.js로 이전합니다.
var $cr = jQuery ("#cr" ); //여전히 jQuery 클래스 라이브러리를 사용하고 있으며, 원래 $를 jQuery로 대체합니다.
var JsCOM_cr = $("cr"); //JsCOM.js 클래스 라이브러리 사용

여기서 jQuery() 함수를 jQuery 객체의 제조 팩토리로 사용할 수 있습니다. >
몇 가지 주의사항
1. 자바스크립트 클래스 라이브러리를 참조할 때 반드시 맨 마지막에 jQuery 참조를 넣어야 합니다. 위와 마찬가지로 JsCOM.js에 대한 참조는 다음과 같습니다. jQuery 참조 앞에 (구체적인 이유는 모르겠지만 꼭 필요합니다) 2. jQuery()가 $()를 대체할 때 주의하세요. 대소문자 구분 (조금 중복되는 것 같지만 그래도 실수하지 않으셨으면 좋겠습니다)
기본적으로 위의
방법에 따라 jQuery와 다른 라이브러리 간의 충돌을 해결할 수 있습니다!
위 방법이 불편하시다면 $ 대신 jQuery를 매번 입력해야 키보드 작업량이 늘어나니 계속해서 읽어주세요. .
위 옵션 외에도 또 다른 옵션이 있습니다. jQuery가 다른 라이브러리와 충돌하지 않도록 하고 싶지만 바로가기를 사용자 정의하려면 다음을 수행하세요.

코드 복사 코드는 다음과 같습니다.
var $j = jQuery.noConflect() //단축키 사용자 정의
var $cr = $j("#cr") / /jQuery 클래스 라이브러리를 사용하려면 사용자 정의 단축키를 사용해야 합니다. ----$j
var JsCOM_cr = $("cr") //JsCOM.js 클래스 라이브러리를 사용하여 이전 코드와 동일

다른 요구 사항이 있고 다른 클래스 라이브러리와 충돌하지 않고 원래 $()를 계속 사용하려면 두 가지 해결 방법이 있습니다.
하나:

코드 복사 코드는 다음과 같습니다.
jQuery.noContribute() //$ 변수에 대한 제어 권한을 JsCOM .js에 부여합니다.
jQuery (function($)
{
$("p").click(function() //jquery 클래스 라이브러리의 $() 메서드를 사용하여 함수 내에서 계속할 수 있습니다.
{
alert($(this).text());
})
})
var JsCOM_cr = $("cr"); // 함수 외부에서도 JsCOM.js를 사용할 수 있습니다. $() 메소드

두 번째:

코드 복사 코드는 다음과 같습니다
jQuery.noConflect(); //$ 변수의 제어권을 다른 클래스 라이브러리로 이전합니다. jquery 클래스 라이브러리의 $ 기호를 사용할 때는 jQuery("#id")(function)를 사용하세요. ($) { //익명 함수를 정의하고 형식 매개변수를 $로 설정합니다.
$(function() { //익명 함수 내부의 $는 모두 jQuery입니다
$("div").click(function () { //계속해서 $() 메서드 사용
alert($(this).text())
})
})
})
(jQuery); //익명 함수 사용 및 실제 매개변수 jQUery 전달
alert($("cr")) //jsCOM.js 클래스 라이브러리의 $() 함수 사용


두 번째 방법은 기존 코드와 호환되는 가장 좋은 방법이어야 하며 코드 수정이 가장 적습니다! 페이지가 먼저 jQuery 클래스 라이브러리를 참조한 다음 다른 클래스 라이브러리를 도입하는 경우 jQuery를 직접 사용하여 일부 작업을 수행하는 동시에 $() 메서드를 다른 라이브러리에 대한 바로가기로 사용할 수 있습니다. 여기서는 jQuery.noContribute() 함수를 호출할 필요가 없습니다. 다음 코드를 참조하세요


jQuery().ready(function() { //jQuery를 호출할 필요가 없습니다. noCon conflict() 함수
var $cr = jQuery ("#cr");
$cr.click(function() {
if ($cr.is(":checked")) {
alert("지원해 주셔서 감사합니다. 계속 운영할 수 있습니다..")
}
})
})
alert($("cr")); jsCOM.js 클래스 라이브러리의 $() 함수


좋습니다. 위의 충돌 해결 방법을 읽은 후 프로젝트에서 jQuery를 안전하게 참조할 수 있습니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿