-
자바스크립트 classList 정의 및 js만들어보기JavaScript 2016. 5. 13. 11:16반응형
제이쿼리의 DOM을 다루는 클래스(removeClass,addClass등) 함수가 자바스크립트에 있는지 몰랐었다...
특히 classList라는 프로퍼티가 있었다는 존재 자체도..... 그래서 알고 넘어가고자 조사 및 구현을 해보았다
정리한 내용은 아래와 같다
(참조 : http://webdir.tistory.com/94)
( function( window ) {
'use strict';
function classReg( className ) {
return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
}// classList support for class management
// altho to be fair, the api sucks because it won't accept multiple classes at once
var hasClass, addClass, removeClass;if ( 'classList' in document.documentElement ) {
hasClass = function( elem, c ) {
return elem.classList.contains( c );
};
addClass = function( elem, c ) {
elem.classList.add( c );
};
removeClass = function( elem, c ) {
elem.classList.remove( c );
};
}
else {
hasClass = function( elem, c ) {
return classReg( c ).test( elem.className );
};
addClass = function( elem, c ) {
if ( !hasClass( elem, c ) ) {
elem.className = elem.className + ' ' + c;
}
};
removeClass = function( elem, c ) {
elem.className = elem.className.replace( classReg( c ), ' ' );
};
}function toggleClass( elem, c ) {
var fn = hasClass( elem, c ) ? removeClass : addClass;
fn( elem, c );
}window.classie = {
// full names
hasClass: hasClass,
addClass: addClass,
removeClass: removeClass,
// toggleClass: toggleClass,
// short names
has: hasClass,
add: addClass,
remove: removeClass,
toggle: toggleClass
};})( window );
반응형'JavaScript' 카테고리의 다른 글
자바스크립트 태스크 큐, 이벤트 루프, (0) 2017.03.28 자바스크립트 배열 리터럴 (0) 2017.03.15 자바스크립트 window.showModalDialog() & window.open() 차이점 (0) 2015.12.08 자바스크립트 Ajax(XMLHttpRequest) 예제 및 정의! (2) 2015.11.26 스크립트 태그 <![CDATA[]]> 란? (0) 2015.10.27