jQuery에서 여러 클래스가있는 요소를 어떻게 선택할 수 있습니까?


2060

나는 두 개의 클래스가있는 모든 요소를 선택합니다 ab.

<element class="a b">

따라서 클래스 가 모두 있는 요소 만

내가 그것을 사용할 때 $(".a, .b")노조를 제공하지만 교차로를 원합니다.


2
우리가 : newbs를 위해 당신은 무엇을 노동 조합 및 교차로 수단을 정의 할 수 있다면 좋은 일 것입니다
계산법 캐년

10
@KolobCanyon Union과 교차는 기본 설정 이론 개념입니다. 예를 들어 노동 조합은 모든 프랑스어 사용자 (남성과 여성 모두 포함)가되고 교차로는 프랑스어를 사용하는 모든 여성이됩니다 (프랑스어를 사용하지 않는 모든 사람은 제외하고 여성이 아닌 모든 사람은 제외). 각 세트를 정의하는 많은 수의 특성으로 결합 및 교차를 만들 수 있습니다. en.wikipedia.org/wiki/Union_(set_theory) en.wikipedia.org/wiki/Intersection_(set_theory)
캐서린 오스본

6
"여성"과 "프랑스어"라는 두 세트 중 하나는 노조가 전 세계의 모든 여성과 전 세계의 모든 프랑스어 구사자, 말을 못하는 여성을 포함하는 세트 일 것입니다. 프랑스어와 프랑스어를 사용하는 남자. 당신이 쓴 것처럼 교차점은 프랑스어를하는 여성들 만 있습니다.
Teemu Leisti

답변:


2626

클래스 (논리적 AND와 같은 교차점)가있는 요소 만 일치 시키려면 사이에 공백없이 선택기를 함께 작성하십시오 .

$('.a.b')

순서는 관련이 없으므로 클래스를 바꿀 수도 있습니다.

$('.b.a')

따라서 클래스 와 divID가 있는 요소 를 일치시키기 위해서는 다음과 같이 작성하십시오.abc

$('div#a.b.c')

실제로는 특정 정보를 얻을 필요가 없으며 ID 또는 클래스 선택기 자체만으로도 충분 $('#a')합니다.


9
@Flater : 단지 예제를위한 것이 었습니다. 그러나 클래스 bc동적으로 추가 된 경우 유용 할 수 있으며 해당 클래스가있는 경우에만 요소를 선택하려고합니다.
Sasha Chedygov

3
Aha, good point :-) 지금까지 나는 .hasClass ()를 사용했지만 이것은 더 좋은 표기법입니다.
Flater

4
이 선택 방법은 CSS에서도 작동합니다. .ab {style properties} 참조 : css-tricks.com/multiple-class-id-selectors
Chris Halcrow

30
@Shimmy : 예. 두 선택기 사이에 공백이 있으면 자손을 찾고 있음을 의미합니다. 즉 .a .b, class b가있는 요소의 자손 인 class 가있는 요소를 검색합니다 a. 따라서 같은 것은 요소 안에 있는 요소 div a만 반환 a합니다 . div
Sasha Chedygov 23.49에

2
@AaA : 맞지 않습니다. CSS가 작동하는 방식이기 때문에 jQuery가 시작된 이래이 방식이었습니다. 쉼표는 둘 중 하나가 아닌 선택기 중 하나와 일치하는 요소를 선택하므로 (논리적 OR로 생각) 혼동되지는 않습니다.
Sasha Chedygov

174

filter()함수를 사용하여이를 수행 할 수 있습니다 .

$(".a").filter(".b")

16
이 답변과 허용되는 답변의 차이점은 무엇입니까?
Vivian River

49
@Rice :이 클래스는 "a"클래스를 가진 객체 목록을 먼저 만든 다음 "b"클래스를 가진 객체를 제외한 나머지는 모두 제거하기 때문에 조금 느려질 것입니다. 그러나 그렇지 않으면 차이가 없습니다.
Sasha Chedygov

5
이것은 첫 번째 예제의 구문에서 작동하지 않는 변수로 정의 된 클래스를 검색하는 인스턴스에서 저에게 효과적이었습니다. 예 : $ ( '. foo'). filter (variable). 감사합니다
pac

7
@pac : $ ( '. foo'+ variable)은 트릭을 수행해야하지만이 경우이 방법이 더 명확한 곳을 알 수 있습니다.
Sasha Chedygov 10

6
이미를 찾았고 .a원래 .a세트에 속하는 다른 임의의 클래스를 여러 번 필터링 해야하는 경우에도 더 효율적 입니다.
Qix-MONICA가 MISTREATED했습니다. 12. 14. 21.

123

이 경우

<element class="a">
  <element class="b c">
  </element>
</element>

.a와 사이에 공백을 넣어야합니다..b.c

$('.a .b.c')

귀하의 답변에 다음과 같은 경우 b와 c 모두에 액세스하는 방법을 알고 싶습니다. <element class = "a"> <element class = "b"> </ element> <element class = "c" > </ element> </ element>? $ ( '. a .b.c')를 통해 잘못된 결과를 얻습니다.
Ipsita Rout

이 예에서는 선택기가 $('.a .c.b')작동합니까?
Daniel W.

예, 순서는 중요하지 않습니다.
Zim84

$('.a > element')
Alex

63

당신이 겪고있는 문제는을 사용하고 Group Selector있지만 Multiples selector! 좀 더 구체적으로 말하면 사용하고있는 $('.a, .b')반면을 사용해야합니다 $('.a.b').

자세한 내용은 아래의 선택기를 결합하는 다양한 방법에 대한 개요를 참조하십시오!


그룹 선택기 : ","

모든 <h1>요소와 모든 <p>요소 및 모든 <a>요소를 선택하십시오 .

$('h1, p, a')

배수 선택기 : ""(문자 없음)

클래스 와 함께 다음의 모든 <input>요소를 선택하십시오 .type textcodered

$('input[type="text"].code.red')

후손 선택기 : ""(공백)

<i>요소 내부의 모든 요소를 선택하십시오 <p>.

$('p i')

어린이 선택기 : ">"

<ul>요소의 바로 하위 요소 인 모든 요소를 선택하십시오 <li>.

$('li > ul')

인접 형제 선택기 : "+"

<a>요소 바로 뒤에 배치 된 모든 요소를 선택하십시오 <h2>.

$('h2 + a')

일반 형제 선택기 : "~"

<span>요소의 형제 인 모든 요소를 선택하십시오 <div>.

$('div ~ span')

38

$('.a .b , .a .c').css('border', '2px solid yellow');
//selects b and c
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="a">a
  <div class="b">b</div>
  <div class="c">c</div>
  <div class="d">d</div>
</div>


26

요소가있는 다른 사례를 언급하십시오.

예 : <div id="title1" class="A B C">

그냥 입력하십시오 : $("div#title1.A.B.C")



20

더 나은 성능을 위해

$('div.a.b')

페이지에있는 모든 HTML 요소를 단계별로 실행하는 대신 div 요소 만 살펴 봅니다.


9

그룹 선택기

body {font-size: 12px; }
body {font-family: arial, helvetica, sans-serif;}
th {font-size: 12px; font-family: arial, helvetica, sans-serif;}
td {font-size: 12px; font-family: arial, helvetica, sans-serif;}

이것이된다 :

body, th, td {font-size: 12px; font-family: arial, helvetica, sans-serif;}

따라서 귀하의 경우 그룹 선택기를 시도했지만 교차점은

$(".a, .b") 

대신 이것을 사용하십시오

$(".a.b") 

4

당신은 이것을 필요 jQuery로 하지 않습니다

에서 Vanilla당신이 할 수 있습니다 :

document.querySelectorAll('.a.b')

2018 년 진정한는하지만,이 문제는 2009 년에 물었다하지 wnen
미키 엘

3

코드 $(".a, .b")는 여러 요소 아래에서 동시에 작동합니다.

<element class="a">
<element class="b">

<element class="a b">쉼표없이 js를 사용하는 것 보다 a와 b 모두 클래스가있는 요소를 선택하려면

$('.a.b')

2

getElementsByClassName()원하는 방법을 사용할 수 있습니다 .

var elems = document.getElementsByClassName("a b c");
elems[0].style.color = "green";
console.log(elems[0]);
<ul>
  <li class="a">a</li>
  <li class="a b">a, b</li>
  <li class="a b c">a, b, c</li>
</ul>

이것은 또한 가장 빠른 솔루션입니다. 여기 에 대한 벤치 마크를 볼 수 있습니다 .


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