jQuery에서 클래스 선택기가 아님


270

특정 클래스의 요소를 선택하지 않는 간단한 선택기 표현식이 있습니까?

<div class="first-foo" />
<div class="first-moo" />
<div class="first-koo" />
<div class="first-bar second-foo" />

난 그냥 첫 세 div를 얻고 싶어

$(div[class^="first-"][class!="first-bar"])

그러나 이것은 마지막 div에 첫 번째 막대 이상이 포함되어 있기 때문에 모든 것을받습니다. 그러한 표현에 자리 표시자를 사용하는 방법이 있습니까? 그런 것

$(div[class^="first-"][class!="first-bar*"]) // doesn't seem to work

도움이 될만한 다른 선택 도구가 있습니까?


내 이전 의견을 긁어, 나는 질문을 다시 읽습니다. 중요한 클래스는 first-bar입니다.
BoltClock

class1 또는 class2가없는 모든 요소를 ​​선택하려는 경우 연결이 작동합니다.$('div[class^="first-"]').not('.class1').not('.class2')
J0ANMM

답변:


543

:not()선택기 가 필요합니다 .

$('div[class^="first-"]:not(.first-bar)')

또는 대안 적으로, .not()방법 :

$('div[class^="first-"]').not('.first-bar');

91
: not ()은 .not () ( jsperf.com/jquery-css3-not-vs-not ) 보다 2-3 배 빠르기 때문에 : not ()을 사용할 수 있습니다. 그러나 jQuery 문서는 더 읽기 쉽기 때문에 api.jquery.com/not-selector 대신 .not ()을 사용하는 것이 좋습니다 . 이것이 누군가가 두 사람 사이의 결정을 내리는 데 도움이되기를 바랍니다!
rinogo

2
@rinogo 이제 대다수의 브라우저가 querySelectorAll을 지원하는 것이 더 빠르지 만 항상 그런 것은 아닙니다.
lonesomeday

4
그렇습니다! :) 내 의견이 비판으로 오지 않기를 바랍니다. 차라리 당신의 이미 유용한 질문에 추가하려고했습니다.
rinogo

1
감사!! 필터링 상자를 제외한 모든 항목에서 Enter 키를 비활성화하십시오. $ ( "input : not (.rgFilterBox)"). keydown (function (e) {if (e.keyCode == 13) {return false;} return true;});
hardba11

3
이 경우 @Daniel가, 그래,하지만 이며 , 다음은 인스턴트 성능 향상을 :) 얻을 수있는 아주 쉽게 변화입니다
rinogo

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.