>  기사  >  웹 프론트엔드  >  jQuery_jquery 로딩 후 $ 충돌 해결 방법

jQuery_jquery 로딩 후 $ 충돌 해결 방법

WBOY
WBOY원래의
2016-05-16 18:23:281138검색

웹사이트 개발의 javasript 부분에서 요즘 개발자들은 document.getElementById()를 직접 작성하는 일이 거의 없습니다. getElementById는 문자가 꽤 많기 때문에 작성하기가 정말 어렵습니다. 예민해서 주의를 기울이지 않으면 실수를 할 수 있습니다. 따라서 $를 사용하여 document.getElemetnById()를 구현하는 것이 일반적입니다.

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

function $() {
var elements = new Array();
for (var i = 0; i < 인수.length; i ) {
var element = 인수[i]
if (typeof element == 'string' )
element = document.getElementById(element);
if (arguments.length == 1)
return element;
elements.push(element)
return elements; ;
}

Microsoft의 asp.net ajax 클라이언트 프레임워크에도 $get과 유사한 코드가 있습니다.

코드 복사 코드는 다음과 같습니다.
var $get = Sys.UI.DomElement .getElementById = function Sys$UI$DomElement$getElementById(id, element) {
///
// / < param name="element" domElement="true" option="true" mayBeNull="true">
/// 8.9.
var e = Function._validateParams(arguments, [
{name: "id", type: String},
{name: "element", mayBeNull : true, domElement: true, 선택사항: true}
]);
if (e) throw e;
if (!element) return document.getElementById(id)
.getElementById) return element.getElementById(id);
// 요소에 getElementById가 없는 브라우저에 대한 구현:
var nodeQueue = []
var childNodes; 🎜>for (var i = 0; i < childNodes.length; i ) {
var node = childNodes[i]
if (node.nodeType == 1) {
nodeQueue[nodeQueue. length] = node;
}
}
while (nodeQueue.length) {
node = nodeQueue.shift()
if (node.id == id) {
return node;
}
childNodes = node.childNodes;
for (i = 0; i < childNodes.length; i ) {
node = childNodes[i]
node.nodeType == 1) {
nodeQueue[nodeQueue.length] = 노드
}
}
}
return null;
jQuery는 간단하고 아름답습니다. 그리고 더 중요하게는 Microsoft에서 적극적으로 홍보하기 때문에 jQuery를 프로젝트에 도입하는 것은 당연하고 불가피합니다. jQuery는 $ 함수를 사용하여 jQuery 개체, 즉 $=jQuery를 반환합니다. , jQuery 소개 마지막으로 $ 기호 문제와 관련하여 충돌이 불가피하게 발생하므로 이를 해결하기 위한 주요 아이디어는 두 가지입니다.
1. $$를 jQuery와 동일하게 만들기 위해 jQuery.noConfict()를 사용합니다. 코드는 $$=jQuery.noConflect()입니다. 이런 식으로 몇 가지 작업을 수행해야 합니다
1. jQuery 및 jQuery 기반 jQuery의 VS 스마트 프롬프트 파일(jQueryXXX –vsdoc. js)도 마지막입니다. window.jQuery = window.$ = jQuery도 window.jQuery = window.$$ = jQuery로 변경되었습니다.
2. jQuery 기반 플러그인 및 확장 파일 끝에 $=jQuery.noConflect();를 추가합니다.
3. 원래 $ 구현 파일에서 상단에 jQuery.noConstrict()를 추가한다는 것은 $의 "힘"을 다른 자체 js 파일에 넘겨준 다음 파일 끝에 $$=jQuery를 추가하는 것을 의미합니다. . 충돌 없음().
4. 페이지에 js를 소개할 때 jQuery 관련 파일은 앞에 배치되고, jQuery와 관련되지 않은 파일은 뒤에 배치되는 순서에 주의하세요.
이렇게 한 후에도 $는 여전히 이전 의미를 나타내며 jQuery를 사용할 때는 jQuery 또는 $$를 사용하면 됩니다.
장점: 몇 가지 파일만 변경하면 목표를 달성할 수 있습니다.
단점: $$는 나중에 jQuery 플러그인을 도입할 때 2단계를 따라야 합니다.

2. 원본 $를 대체합니다. 결국 jQuery를 사용하여 코드를 작성하는 것은 어색하기 때문에 두 번째 방법을 채택했습니다. asp.net ajax의 호환성을 고려하여 원래 $는 $get으로 대체됩니다. Visual Studio


로 교체하는 것은 어렵지 않지만, 여전히 몇 가지 단계가 필요합니다.
1. 먼저 $("를 $get("으로 바꾸고, $('를 $get('로 바꾸고, 마지막으로 $get을 $로 바꿉니다.
2. 교체할 때 VSS를 사용합니다. 프롬프트 기능을 확인하고 (뭔가 문제가 있으면 별 문제가 아닙니다.) 결국에는 약간의 문제가 있었지만 동료들의 도움으로 기본적으로 해결되었습니다.
3. Visual Studio 교체 기능이 정말 많습니다.
jQuery_jquery 로딩 후 $ 충돌 해결 방법
을 확인하세요. 단, 오른쪽에 $가 명확하게 표시되므로 정규식을 선택하지 마세요. 물론, Look In은 현재 프로젝트를 선택합니다. 물론 오른쪽의 버튼을 누른 후 여러 디렉터리를 선택하여 질문을 구성할 수 있습니다. 이전에는 이러한 파일 형식을 사용하여 특수 파일을 선택한 적이 없습니다. .를 입력하여 범위를 좁힙니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.