JavaScript/JQuery 선택자 (Selector) 모음

JavaScript와 JQuery에서 사용되는 선택자들에 대해서 살펴보겠습니다.

JQuery와 CSS의 선택자로 더 잘 알려져 있지만

JavaScript에 querySelector() 및 querySelectorAll()을 통해 접근 시 같은 선택자를 사용합니다.

 

* 물론 JavaScript에서 getElementById() 와같은 함수가 더 빠르고 지원이 잘 되지만

속도를 체감하기도 힘들뿐더러 코드가 더 깔끔하고 가독성이 좋다고 생각해 저는 querySelector()를 사용합니다.

 

 

기본 선택자

1. * : 모든 요소 선택

// 모든요소 선택
$("*")
document.querySelectorAll("*")

2. # : ID 선택자 (ID명으로 선택)

// ID명이 'btnPrev'인 요소 선택 
 $("#btnPrev")
 document.querySelector("#btnPrev")

3. . : Class 선택자 (Class명으로 선택)

// Class 명이 'btn'인 요소 선택
$(".btn")
document.querySelectorAll(".btn")

4. 태그명 : 태그명 선택자 (태그 이름으로 선택)

// 태그명이 'button'인 요소 선택
$("button")
document.querySelectorAll("button")

 

조합 선택자

조합 선택자는 여러 선택자들을 조합하여 사용하는 선택자입니다.

1. OR선택자 : , (콤마)로 구분하여 여러 선택자들을 한 번에 선택합니다.

// ID가 'btnPrev' 인 요소와 Button 태그들을 선택합니다.
$("#btnPrev, button")
document.querySelectorAll("#btnPrev, button")

2. AND선택자 : 구분 값없이 선택자들을 붙여사용 하면 붙여사용 된 선택자들에 모두 부합되는 요소를 선택합니다.

// button 태그이면서 아이디가 'btnPrev' 인 요소를 선택합니다.
$("button#btnPrev")
document.querySelectorAll("button#btnPrev")

 

속성 선택자

1. [속성명] : 해당 속성이 있는 요소 선택

// 'value'라는 속성(attribute) 이 있는 요소 선택
$("[value]")
document.querySelectorAll("[value]")

2. [속성명="일치 속성 값"] : 주어진 일치 속성 값이 속성의 값과 일치하는 요소 선택

// 'value'라는 속성의 값이 'Aiden'인 요소 선택
$("[value='Aiden']")
document.querySelectorAll("[value='Aiden']")

3. [속성명*="부분 일치 속성값"] : 주어진 부분일치 속성 값이 속성 값에 포함된 요소 선택

// 'value'라는 속성의 값에 'A'라는 문자가 포함된 요소 선택
$("[value*='A']")
document.querySelectorAll("[value*='A']")

4. [속성명!="속성 값"] : 속성 값이 존재하지 않거나 주어진 속성 값과 불일치하는 요소 선택

// 'value'라는 속성의 값이 'Aiden'이 아닌 요소 선택
$("[value!='Aiden']")
document.querySelectorAll("[value!='Aiden']")

5. [속성명^="속성 시작 값"] : 주어진 속성 시작 값으로 속성 값이 시작하는 요소 선택

// 'value'라는 속성의 값이 'A'로 시작하는 요소 선택
$("[value^='A']")
document.querySelector("[value^='A']")

6. [속성명$="속성 끝 값"] " 주어진 속성 끝 값으로 속성 값이 끝나는 요소 선택

// 'value'라는 속성의 값이 'n'으로 끝나는 요소 선택
$("[value$='n']")
document.querySelectorAll("[value$='n']")

* 속성 선택자는 보통 기본선택자와 조합하여 쓰이는 경우가 많은 것 같습니다.

// input 태그중 'value'가 'Aiden' 인 요소선택
$("input[value='Aiden']")
document.querySelectorAll("input[value='Aiden']")

// input 태그중 'name' 이 'rdiGroup' 인 요소선택
$("input[name='rdiGroup']")
document.querySelectorAll("input[name='rdiGroup']")

 

계층 선택자

계층 선택자는 계층적인 구조에서 선택하는 요소를 선택하는 것입니다.

1. 부모 선택자 > 자식선택자 : 부모선택자 바로 밑에 있는 자식선택자 요소를 선택합니다.

// div바로 밑에 있는 input 태그를 선택합니다.
$("div > input")
document.querySelectorAll("div > input")

 

2. 부모 선택자 하위 선택자 : 부모선택자 아래에 있는 모든 하위선택자 요소를 선택합니다.

// div 태그 밑에 있는 input 태그를 선택합니다.
$("div input")
document.querySelectorAll("div input")

 

3. 선택자 + 다음 인접 선택자 : 동등계층에서 선택자 바로다음에 있는 다음인접 선택자 요소를 선택합니다.

// input 태그 바로 다음에있는 label 요소를 선택
$("input + label")
document.querySelectorAll("input + label")

 

4. 선택자 ~ 다음 형제 선택자 : 동등계층에서 선택자 뒤에 모든 다음형제 선택자 요소를 선택합니다.

// div태그와 동등계층에서 div태그 뒤에있는 모든 pre 태그를 선택합니다.
$("div ~ pre")
document.querySelectorAll("div ~ pre")

 

필터 선택자

필터 선택자로 선택자중 특정한 요소만 필터 하는 것입니다.

1. even, odd : 짝수/홀수 인덱스의 요소만 필터 (인덱스는 0부터 시작)

// 짝수번째 div태그만 선택
$("div:even")
document.querySelectorAll("div:even")

// 홀수번째 div태그만 선택
$("div:odd")
document.querySelectorAll("div:odd")

 

2. nth-child(index) : 형제 요소 중 index에 해당하는 요소만 필터

// li태그의 형제들중 2번째 요소만 출력
$("li:nth-child(2)")
document.querySelectorAll("li:nth-child(2)")

 

3. first, last: 첫 번째, 마지막 요소만 필터

// 첫번째 li태그와, 마지막 li태그 요소만 선택
$("li:first")
document.querySelectorAll("li:first")

$("li:last")
document.querySelectorAll("li:last")

 

4. eq(index), gt(index), lt(index): index번째 요소, index번째 이후 요소 선택, index번째 이전 요소 선택

(index는 0부터)

// 3번째 li태그 선택
$("li:eq(2)")
document.querySelector("li:eq(2)")

// 3번째이후 li태그 선택
$("li:gt(2)")
document.querySelectorAll("li:gt(2)")

// 3번째이전 li태그 선택
$("li:lt(2)")
document.querySelectorAll("li:lt(2)")

 

5. selected, checked, disabled, enabled, focus : 요소 상태에 따른 필터

// selected된 option만 선택
$("option:selected")
document.querySelectorAll("option:selected")

// checked된 checkbox만 선택
$("input[type='checkbox']:checked")
document.querySelectorAll("input[type='checkbox']:checked")

// disabled된 input태그만 선택
$("input:disabled")
document.querySelectorAll("input:disabled")

// enabled된 input태그만 선택
$("input:enabled")
document.querySelectorAll("input:enabled")

// focus된 input태그만 선택
$("input:focus")
document.querySelectorAll("input:focus")

 

6. not(원치 않는 선택자) : 원치않는 선택자를 필터 합니다.

// input태그중 disabled되지 않은 요소만 선택
$("input:not(:disabled)")
document.querySelectorAll("input:not(:disabled)")

 

7. has(포함된 선택자) : 포함된 선택자를 포함하고 있는 선택자를 필터 합니다.

// h1태그를 포함한 div태그만 선택합니다.
$("div:has(h1)")
document.querySelectorAll("div:has(h1)")

 

8. contains(문자열) : 문자열을 포함한 선택자를 필터 합니다.

// '안녕하세요' 라는 텍스트를 포함한 p 태그를 선택합니다.
$("p:contains('안녕하세요')")
document.querySelectorAll("p:contains('안녕하세요')")

 

9. hidden, visible : 숨겨진, 보이는 요소만 필터 합니다.

// 숨겨진 div태그를 선택합니다.
$("div:hidden")
document.querySelectorAll("div:hidden")

// 보이는 div태그를 선택합니다.
$("div:visible")
document.querySelectorAll("div:visible")