ν°μ€ν 리 λ·°
[JS] μ λ ν°λ₯Ό μ¬μ©νμ¬ DOMμμλ₯Ό μ νν μ μλ λ°©λ²λ€
Carrotπ₯ 2020. 7. 11. 06:19ν¬μ€ν ν μ΄μ
μ
λ ν°λ‘ μμλ₯Ό μ νν μΌμ΄ μμλλ°
νμλμμΈ λ³ΈμΈμ ν¬ν¨νμ¬ νμλ‘ νμνκ³ μΆμλ€.
κ°μ₯ λ§μ΄ μ°μ΄λ λ©μλλ€μ μ΄ν΄λ³΄μλλ°,querySelector
/querySelectorAll
μ κ²½μ° λ³ΈμΈμ μ μΈνκ³ νμλ‘ νμνκ³ ,closest
λ λ³ΈμΈμ ν¬ν¨νμ¬ μμλ‘ νμνλ€.
λ λ€ λ§μ μλ€μλ€.
κ·Έλμ κ²°κ΅μ matches
λ₯Ό μΆκ°μ μΌλ‘ νμ©νμ¬ μ νν μ μλ λ°©λ²μ μ°Ύμλλ€.
(κ·Έ κ³Όμ μμ μ
λ ν°λ₯Ό μ¬μ©νμ¬ DOMμμλ₯Ό μ νν μ μλ λ°©λ²λ€μ μ£λ€κ±°μ ꡬκΈλ§ν΄λ΄€κΈ° λλ¬Έμ. ν¬μ€ν
νλ€λ λ»)
μ λ ν°λ₯Ό μ¬μ©νμ¬ DOMμμλ₯Ό μ νν μ μλ λ°©λ²λ€
- element.querySelector(selector) & element.querySelectorAll(selector) -> μμμμμ€μμ νμ
- element.closest(selector) -> λ³ΈμΈμΌλ‘λΆν° μμνμ¬ (λ³ΈμΈν¬ν¨) μμμμλ‘ νμ
- μ§μ λ°ννλ λ©μλλ μλμ§λ§, element.matches(selector)λ₯Ό μ΄μ©νμ¬ νμ
1. querySelector & querySelectorAll
κ°μ₯ κΈ°λ³Έμ μΌλ‘ querySelector
, querySelectorAll
μ΄ μλ€.
element = baseElement.querySelector(selectors);
elementList = baseElement.querySelectorAll(selectors);
μ λ ν° νΉμ μ λ ν° λμΉλ₯Ό μ λ ₯νλ©΄, κ°κ° 쑰건μ λ§μ‘±νλ μμ, μμλ°°μ΄μ λ°ννλ€.
baseElement(λ³ΈμΈ)μ μ μΈνκ³ νμμμλ€μ νμνλ€.
2. closest
targetElement.closest(selectors);
μμ μΌλ‘λΆν° μΆλ°νμ¬ λΆλͺ¨μμλ‘ ν₯νλ€.
μ§μ ν μ νμμ λ§μ‘±ν λκΉμ§ νμνλ€.
3. element.matches(selector) λ₯Ό νμ©ν λ°©λ²
μΌλ¨ matches
μ체λ Boolean
κ°μ λ°ννλ λ©μλμΈλ°
var result = element.matches(selectorString);
μ νμλ₯Ό λ§μ‘±νλ μ리먼νΈλ©΄ true
, κ·Έλ μ§ μμΌλ©΄ false
λ₯Ό λ°ννλ€.
μ²μμ κΆκΈνλ
νμλμμΈ λ³ΈμΈμ ν¬ν¨νμ¬ νμλ‘ νμνλ λ°©λ²μ matches
λ₯Ό νμ©νμ¬ κ΅¬νν΄λ³΄μλ€.
<div class="box carrot">
<div class="one"></div>
<div class="two carrot"></div>
<div class="three carrot"></div>
</div>
μμ κ°μ HTML λ§ν¬μ
μμλ€μ΄ μμ λ,
νμλμμ box λ‘ νκ³ , λ³ΈμΈμ ν¬ν¨νμ¬ carrot
μ΄λΌλ ν΄λμ€μ΄λ¦μ κ°μ§ μμλ₯Ό νμνκ³ μΆλ€λ©΄?
querySelector
μ²λΌ μ²μμΌλ‘ μ°Ύμ μμ νλλ§μ λ°ννλ €λ©΄ μλ κ² μΈ μ μλ€.
element.matches(selector) && element || element.querySelector(selector);
μ€μ λ‘ μ μ©νλ€λ©΄ μλμ κ°λ€.
λ€μμΌλ‘ querySelectorAll
μ²λΌ μ²μμΌλ‘ 쑰건μ λ§μ‘±νλ λͺ¨λ μμλ₯Ό λ°ννλ €λ©΄ μλ κ² μΈ μ μλ€.
[element, ...element.querySelectorAll(selector)].filter(elem => elem.matches(selector));
λ³ΈμΈμ 첫λ²μ§Έλ‘ λ£κ³ , κ·Έ λ€μ νμμμλ€μ querySelectorAll
λ‘ μ νν λ€ νΌμΉκΈ°μ°μ°μ(...)λ‘ μΆκ°νλ€.
κ·Έλ¦¬κ³ κ·Έ λ°°μ΄ μμμ ".carrot"
μ λ§μ‘±νλ λ
μμ νν°λ§νλ€.
λ°νκ°μ λ€μκ³Ό κ°λ€.
querySelectorAll
μ λ§μΉ λ³ΈμΈμ ν¬ν¨νμ¬ νμν κ² λ§λ₯ μΈ μ μλ€.
μ°Έκ³ :
https://developer.mozilla.org/ko/docs/Web/API/Element/querySelector
https://developer.mozilla.org/ko/docs/Web/API/Element/closest
https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
https://stackoverflow.com/questions/60831411/how-to-have-element-queryselector-include-the-root-element/60831454#60831454
'κ³΅λΆ > JS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] #λͺ¨μκ³ μ¬ - νλ‘κ·Έλλ¨Έμ€ μ½λ©ν μ€νΈ μ°μ΅ (0) | 2020.07.12 |
---|---|
[JS] Nκ°μ length λ₯Ό κ°μ§ arrayμ κ° μ±μ°κΈ° (0) | 2020.07.12 |
[JS] delete μ°μ°μ (0) | 2020.07.06 |
[JS] μμ±μν¨μμ return κ° (0) | 2020.07.06 |
[JS] forEach, for in, for of (μμμ Array empty μμ μν) (2) | 2020.07.06 |
- μ½λ©λΆνΈμΊ ν
- VSC
- eslint
- GIT
- λ°λλΌμ½λ©
- css
- μμ±μν¨μ
- array
- review
- HTML
- eventlistener
- js
- stackoverflow
- string
- λΆνΈμΊ ν
- λ°λλΌμ½λ© νκΈ°
- KEYBOARD
- DOM
- book
- Stash
- Total
- Today
- Yesterday