답변:
hasClass
방법을 사용하십시오 :
jQueryCollection.hasClass(className);
또는
$(selector).hasClass(className);
인수는 (분명히) 확인중인 클래스를 나타내는 문자열이며 부울을 반환하므로 대부분의 jQuery 메소드와 같은 체인을 지원하지 않습니다.
참고 :className
공백이 포함 된 인수 를 전달하면 문자 그대로 컬렉션의 요소 className
문자열 과 일치 합니다. 예를 들어 요소가 있다면
<span class="foo bar" />
다음이 반환됩니다 true
:
$('span').hasClass('foo bar')
이것들은 다음을 반환합니다 false
:
$('span').hasClass('bar foo')
$('span').hasClass('foo bar')
로부터 자주 묻는 질문
elem = $("#elemid");
if (elem.is (".class")) {
// whatever
}
또는:
elem = $("#elemid");
if (elem.hasClass ("class")) {
// whatever
}
jQuery없이 :
var hasclass=!!(' '+elem.className+' ').indexOf(' check_class ')+1;
또는:
function hasClass(e,c){
return e&&(e instanceof HTMLElement)&&!!((' '+e.className+' ').indexOf(' '+c+' ')+1);
}
/*example of usage*/
var has_class_medium=hasClass(document.getElementsByTagName('input')[0],'medium');
이것은 jQuery보다 훨씬 빠릅니다!
...&&!!((' '+e.classname+' ').indexOf(' '+c+' ')+1)
뿐만 아니라 왜합니까 &&!(' '+e.classname+' ').indexOf(' '+c+' ')
?
indexOf
반환 -1
되는 클래스가 존재하지 않습니다. 내가 할 경우 !!-1
, 그것은 것입니다 true
. 내가하고 있기 때문에 !!-1+1
거짓이 될 것입니다. 더 좋은 방법은 ...&&!!~(' '+e.className+' ').indexOf(' '+c+' ')
이지만 당시에는 기억하지 못했습니다.
...&&~(' '+e.className+' ').indexOf(' '+c+' ')
공식 jQuery FAQ 페이지를 확인하십시오.
내 경우에는 'is'jQuery 함수를 사용하고 다른 CSS 클래스가 추가 된 HTML 요소가 있었으며 중간에 특정 클래스를 찾고 있었기 때문에 "is"를 확인하는 좋은 대안을 사용했습니다. 이미 다른 CSS 클래스가있는 html 요소에 동적으로 추가 된 클래스는 또 다른 좋은 대안입니다.
간단한 예 :
<!--element html-->
<nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>
<!--jQuery "is"-->
$('#menu').is('.cbp-spmenu-open');
고급 예 :
<!--element html-->
<nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>
<!--jQuery "is"-->
if($('#menu').is('.cbp-spmenu-bottom.cbp-spmenu-open')){
$("#menu").show();
}