본 글에서는 jQuery 소스코드 해석의 RemoveClass() 메소드를 좀 더 자세히 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
removeClass() 메소드는 addClass()와 크게 다르지 않습니다. 살펴보겠습니다:
jQuery.fn.extend({
RemoveClass: 함수( 값 ) {
var 클래스, elem, cur, clazz, j, finalValue,
i = 0,
len = this.length,
진행 = 인수.길이 === 0 || 값 유형 === "문자열" && 값;
if ( jQuery.isFunction( value ) ) {
return this.each(function( j ) {
//클래스 이름을 제거하기 위해 전달한 함수에서 반환된 클래스 이름이 있으며, RemoveClass 자체가 다시 호출됩니다.
jQuery( this ).removeClass( value.call( this, j, this.className ) );
});
}
if ( 계속 ) {
클래스 = ( 값 || "" ).match( rnotwhite ) ||
for ( ; i
elem = this[i];
Cur = elem.nodeType === 1 && ( elem.className ?
( " " elem.className " " ).replace( rclass, " " ) :
""
);
만약 (현재) {
j = 0;
동안 ((Clazz = 클래스 [J]) {
//차이점은 아래 while 루프에 있습니다. 현재 DOM 요소가 검색되고 제거하려는 클래스 이름이 포함되어 있으면 이를 " "
으로 바꾸는 데 사용됩니다.
While (Cur.indexof ("Clazz") & GT; = 0) {
Cur = cur.replace( " " clazz " ", " " );
|
}
//제거할 클래스 이름의 값을 전달했는지 여부를 확인하는 주요 차이점 중 하나는 다음과 같습니다. 전달되지 않은 경우 finalValue="", 이때 DOM 요소에 클래스 이름이 있는 경우, 즉 조건이 true인 경우 DOM 요소의 모든 클래스 이름을 제거합니다.
//전달되면 일치하는 클래스 이름을 제거합니다. 제거 후 제거되지 않은 클래스 이름은 cur에 이어져 왼쪽과 오른쪽 끝의 공백 문자열이 제거되고 DOM 요소의 클래스 이름은 현재로 설정합니다.
finalValue = value ? jQuery.trim( cur ) : "";
If ( elem.className !== finalValue ) {
에게
}
}
}
}
이것을 돌려주세요;
}
});
이 기사가 모든 사람의 jQuery 프로그래밍에 도움이 되기를 바랍니다.