코딩 기록/자바스크립트
바닐라 자바스크립트 sibilings 형제 찾기 기능 (Vanilla js siblings function)
kimyang-Sun
2023. 1. 28. 20:43
See the Pen 바닐라 자바스크립트 siblings 기능 (Vanilla js siblings function) by kimyangsun (@kimyangsun) on CodePen.
바닐라 자바스크립트 sibilings 기능 (Vanilla js siblings function) 입니다.
제이쿼리를 사용할때 선택자로 엘리먼트를 하나 잡고 siblings() 를 이용하여 나머지 형제들을 선택하는 경우가 많은데
바닐라 자바스크립트에서는 그 기능을 그대로 사용하려면 따로 만들어서 사용해주어야 하기 때문에 함수 형태로 만든 코드를 올립니다. :)
/* 바닐라 자바스크립트 siblings 형제 찾는 함수 커스텀 (결과는 배열로 리턴됩니다.) */
// 첫번째 인자에는 엘리먼트,
// 두번째 인자에는 클래스가 들어갑니다. (형제들중 해당하는 클래스를 가진 형제만 가져옴. 상관없으면 생략하면 됨)
function siblings(element, className) {
return [...element.parentElement.children].filter(item => {
if (!className) {
return item != element;
} else {
return item != element && item.classList.contains(className);
}
});
}
// 첫번째 예시 - 첫번째 아이템의 형제들
const first = document.querySelector(".group1 .first");
let firstItemBrothers = siblings(first);
console.log(firstItemBrothers); // [<div class="item second"></div>, <div class="item third"></div>]
firstItemBrothers.forEach((item) => {
item.classList.add('red'); // 첫번째 아이템의 형제들에게 red 클래스를 줌
});
// 두번째 예시 - 두번째 아이템의 형제들중 third 클래스를 가진 형제만 선택
const secound = document.querySelector(".group2 .second");
let thirdItem = siblings(secound, 'third');
console.log(thirdItem); // [<div class="item third"></div>]
thirdItem.forEach((item) => {
item.classList.add('red'); // 첫번째 아이템의 형제들에게 red 클래스를 줌
});