요소에 jQuery가 포함 된 CSS 클래스가 있는지 확인


173

jQuery로 작업 중이며 요소에 관련된 특정 CSS 클래스가 있는지 여부를 쉽게 확인할 수있는 방법을 찾고 있습니다.

요소의 id와 내가 찾고있는 CSS 클래스가 있습니다. if 문에서 요소에 대한 해당 클래스의 존재를 기반으로 비교를 수행 할 수 있어야합니다.


답변:


237

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')

4
동의하지 않습니다. 설명서는 범주별로 구성되어 있지만 모든 방법을 알파벳순으로 쉽게 볼 수 있습니다. 모든 것이 예제와 함께 제공되며 의견 섹션은 일반적으로 누락 된 내용을 지 웁니다. jQuery는 많은 훌륭한 기능과 유틸리티를 가지고 있으며, 모두를 발견하기 위해서는 약간의 학습이 필요합니다. -편집-말이 되네요. 확실히 먼 길입니다.
Trafalmadorian

1
@Trafalmadorian, 상황이 변경되어 원래 의견을 삭제했습니다. 원래는 -EDIT- 전에 모든 것을 게시했으며 문서 품질에 대한 내 의견은 더 이상 관련이 없지만 이전 (MediaWiki) 시스템을 언급했다고 대답했습니다. 그런 다음 이전 주석을 삭제하고 -EDIT-로 다시 설정했습니다. 이 정리가 미래의 독자들에게 조금 더 명확하고 오해의 소지가 없기를 바랍니다.
eyelidlessness

@daniloquio, 그것은 당신이 api.jquery.com에 직접 가면 ... 어떤 이유로 웹 사이트는 여전히 docs.jquery.com의 끔찍한 위키 버전으로 연결됩니다
eyelidlessness

21

로부터 자주 묻는 질문

elem = $("#elemid");
if (elem.is (".class")) {
   // whatever
}

또는:

elem = $("#elemid");
if (elem.hasClass ("class")) {
   // whatever
}

3
.is는 ()주의 - - "jQuery를에있다 () 메소드가 true를 반환합니다 다음에 해당하는 경우입니다 기반 컬렉션의 요소를 현재 컬렉션 일치의 요소가있는 경우" bennadel.com/blog/...

11

부정에 관해서는 요소가 클래스가 아닌지 알고 싶다면 Mark가 말한 것처럼 간단하게 수행 할 수 있습니다.

if (!currentPage.parent().hasClass('home')) { do what you want }

3

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+' ')?
Blexy

1
때문에 indexOf반환 -1되는 클래스가 존재하지 않습니다. 내가 할 경우 !!-1, 그것은 것입니다 true. 내가하고 있기 때문에 !!-1+1거짓이 될 것입니다. 더 좋은 방법은 ...&&!!~(' '+e.className+' ').indexOf(' '+c+' ')이지만 당시에는 기억하지 못했습니다.
Ismael Miguel

미안 해요, 의미...&&~(' '+e.className+' ').indexOf(' '+c+' ')
이스마엘 미구엘

3

여기에 착륙했지만 실제로 jQuery 무료 방법을 찾고있는 사람을 돕기 위해 :

element.classList.contains('your-class-name')


0
 $('.segment-name').click(function () {
    if($(this).hasClass('segment-a')){
        //class exist
    }
});

0

내 경우에는 '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();
    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.