요소에 특정 클래스가 없는지 확인하는 방법은 무엇입니까?


232

수업이 없는지 어떻게 확인하나요? 예를 들어, "test"클래스가 있는지 확인하는 방법을 알고 있지만 "test"클래스가 없는지 어떻게 확인합니까?

if($(this).hasClass("test")){
}

답변:


484
if (!$(this).hasClass("test")) {

34
TIMTOWTDI 정맥에는 끔찍한 해결책이 있습니다 : if($(this).is(":not(.test)"))> :)
Phrogz

6
TIMTOWTDIBSCINABTE
Fizzix

25
누군가 궁금해하는 경우 : 하나 이상의 방법이 있지만 때로는 일관성이 나쁜 것이 아닙니다.
Captain Hypertext

145

sdleihssirhc의 대답은 물론 문제의 경우에 맞는 대답이지만 특정 클래스가없는 요소를 선택 해야하는 경우 참고로 not 선택기를 사용할 수 있습니다 .

// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' );  // <-- alternative 

8
당신의 대답이 가장 좋습니다. sdleihssirhc의 대답 이이 질문이 jQuery와 아무런 관련이 없었고 '일부 조건이 주어지면 Javascript에서 해당 조건이 참이 아닌지 테스트하는 방법'으로 더 잘 표현됩니다. jQuery로 원하는 것은 단일 객체에서 가능한 한 쉽게 전체 DOM 요소 컬렉션에서 작동하는 것입니다. 당신의 대답은 그 해결책을 제공합니다. +1
Stijn de Witt

1
@byronyasgur 원래 질문의 맥락에서 포스터는 알려진 특정 요소에 클래스가 없는지 테스트하려고했습니다. 이 코드는 클래스가없는 모든 요소를 ​​선택하므로 포스터 문제를 해결하지 못합니다. 내가 왜 이것을 처음 게시했는지 기억이 나지 않습니다.
JJJ

14

"xyz"클래스가 아닌 "abc"클래스를 가진 요소 (또는 요소 그룹)를 선택하십시오.

    $('.abc:not(".xyz")')

일반 CSS를 선택할 때 사용할 수 있습니다 .abc:not(.xyz).


6

.not () 메소드를 사용하고 속성을 확인하십시오.

$('p').not('[class]');

여기에서 확인하십시오 : http://jsfiddle.net/AWb79/


8
이것은 완전히 잘못되었습니다. 대괄호는 클래스 용이 아니라 속성을 식별하는 선택기에 사용됩니다.
Misterparker

1
실제로 그것은 완전히 맞습니다. '[class]'은 (는) 클래스가있는 속성을 올바르게 식별합니다.
데보라

@Misterparker 클래스는 속성입니다.
Matthew Cira

이것은 클래스 값에서와 같이 요소에 특정 클래스가있는 경우가 아니라 속성이 있는지 확인합니다.
Mark

6

당신은 이것을 시도 할 수 있습니다 :

<div id="div1" class="myClass">there is a class</div>
<div id="div2"> there is no class2 </div>

$(document).ready(function(){
    $("#div2").not('.myClass');  // do not have `myClass` class.
});

이 답변은 페이지에 아무런 가치도 부여하지 않으며, 7 년 동안 게시되었습니다. 코드 전용 및 중복 컨텐츠를 게시하지 마십시오.
mickmackusa


0

이 6 년 후를 읽고 TIMTOWTDI vein ... : D 에서도 해킹을 당할 것이라고 생각했습니다 .'JS 에티켓 '이 잘못되기를 바랍니다.

나는 보통 조건으로 var를 설정하고 나중에 참조한다.

// var set up globally OR locally depending on your requirements
var hC;

function(el) {
  var $this = el;
  hC = $this.hasClass("test");

  // use the variable in the conditional statement
  if (!hC) {
    //
  }
}

조건부 삼항 연산자를 주로 사용하고 깨끗한 코드를 원하기 때문에이 작업을 수행한다고 언급해야합니다. 따라서이 경우 내가 가진 것은 이것입니다.

hC ? '' : foo(x, n) ;
   // OR -----------
!hC ? foo(x, n) : '' ;

...이 대신에 :

$this.hasClass("test") ? '' : foo(x, n) ;
   // OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;

0

이유를 모르겠지만 허용 된 답변이 효과가 없었습니다. 대신 이것은 효과가 있었다 :

if ($(this).hasClass("test") !== false) {}

이것은 실제로 "test"클래스가 있는지 확인합니다. "test"클래스가 없는지 확인하려면 "! == false"대신 "=== false"또는 "! == true"가 필요합니다.
Lisa Cerilli
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.