주니어 개발자가 되는 중입니다...loading....
Jquery - Element 탐색하기 본문
1. 순회탐색하기
first()
|
선택자로 선택된 element중 첫번째
|
last() | 선택자로 선택된 element 중 마지막 |
eq(index번호) | 선택자로 선택된 element중 index번호가 일치하는 element |
filter(function(i,v){}||선택자) | 매개변수 선택자랑 일치하는 element 또는 함수에서 반환하는 값이 true인 element |
not(선택자) | 매개변수 선택자를 제회한 element |
<div id="container">
<h3 class="a">h3 1</h3>
<h3>h3 2</h3>
<h3 class="a">h3 3</h3>
<h3>h3 4</h3>
<h4>h4</h4>
<p>p 1</p>
<p class="a">p 2</p>
<p>p 3</p>
<p class="a">p 4</p>
</div>
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
<button onclick="fisrtTest();">첫번째 elemnet선택</button>
<button onclick="lastTest();">마지막 elemnet선택</button>
<button onclick="filterTest();">조건에 맞는 elemnet선택</button>
<button onclick="notTest();">예외 elemnet선택</button>
<button onclick="eqTest();">eq선택</button>
<script>
const eqTest=()=>{
$("#container>*").eq(3).css("backgroundColor","yellow");
}
const notTest=()=>{
$("#container>*").not(".a").css("backgroundColor","yellow");
} //#container에 속하면서 class가 a이 아닌것
const filterTest=()=>{
console.log($("#container>*").filter("p"));
console.log($("#container>*").filter("p.a")); //p태그이면서 class가 a인 것
$("#container>*").filter(function(i,v){
console.log(i,v);
})
$("#container>*,table td").filter(function(i,v){
//return v.innerText.includes("1");
// 같은 방법
return $(v).text().includes("1");
}).css("backgroundColor","hotpink")
}
const fisrtTest=()=>{
// const firstEl=$("#container>*").first();
// console.log(firstEl);
const firstEl=$("#container>p","#container>h4").first();
console.log(firstEl);
$("table tr").first().css("backgroundColor","lime");
}
const lastTest=()=>{
const lastEl=$("#container>.a").last();
console.log(lastEl);
$("table tr").last().css("backgroundColor","cornflowerblue");
}
</script>
2. 자식 element 탐색하기
children()
|
모든 자손 element를 찾는것(직접 연결되어 있는 것) |
find("선택자") | 모든 후손 element 중 선택자에 해당하는 것 |
<div id="childcontainer">
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>
<button>버튼입니다</button>
</td>
<td>
<input type="text" name="test">
</td>
</tr>
</table>
<img src="https://w7.pngwing.com/pngs/441/722/png-transparent-pikachu-thumbnail.png" alt="" width="200" height="200" style="display: none;">
<button>두번째 버튼</button>
</div>
<button onclick="childrenTest();">자식들 찾기</button>
<button onclick="findTest();">후손 태그들 찾기</button>
<script>
const childrenTest=()=>{
const t=$("#childcontainer>table>tbody").children();
console.log(t); //tr
console.log(t.children()); //td
t.children().filter((i,v)=>{
return i%2==0;
}).css("backgroundColor","purple");
}
const findTest=()=>{
const b=$("#childcontainer>table>tbody").find("button");
console.log(b);
$("#childcontainer").find("button").click(e=>{
$("img").css("display","block");
}) //버튼을 찾아서 이벤트를 넣어라
}
</script>
3. 부모 element 탐색하기
parent()
|
바로 위에 있는 부모태그 가져오기 |
parents() | 모든 부모태그 가져오기 |
parentsUntil("선택자") | 매개변수까지의 부모를 가져오기 |
<div id="parentcontainer">
<div>나는 div div의 부모
<div>나는 div h1의 부모
<h1>나는 h1 p의 부모
<p>
나는 p
</p>
</h1>
</div>
</div>
</div>
<button onclick="parentTest();">부모찾기</button>
<button onclick="parentsTest();">부모들찾기</button>
<button onclick="parentsUntilTest();">특정범위로 부모 찾기</button>
<style>
div#parentcontainer *{
border : 3px solid aqua;
padding: 10px;
}
</style>
<script>
const parentsUntilTest=()=>{
const psuntil=$("#parentcontainer p").parentsUntil("div#parentcontainer") //접근하는 부모 전까지만 출력
console.log(psuntil);
}
const parentsTest=()=>{
const ps=$("div#parentcontainer p").parents();
// 나의 바로 위 부모 : fist,
// 최상위 부모 : last => 인덱스 처음을 가까운 부모부터 시작하기 때문
console.log(ps);
}
const parentTest=()=>{
const p=$("div#parentcontainer p").parent();
console.log(p); //h1
console.log(p.parent()); //div 나는 h1의 부모
}
</script>
f. 형제레벨 element 탐색
siblings() | 위, 아래 형제를 다 가져오는 함수 |
next() | 아래 태그를 가져오는 함수 |
nextAll() | 아래 있는 태그 전체를 가져오는 함수 |
nextUntil() | 아래에 있는 태그를 범위에 맞게 가져오는 함수 |
prev() | 위에 있는 태그를 가져오는 함수 |
prevAll() | 위에 있는 태그 전체를 가져오는 함수 |
prevUntil() | 위에 있는 태그 범위에 맞게 가져오는 함수 |
<div id="brocontainer">
<h2>1</h2>
<h2>2</h2>
<p>p 1</p>
<p>p 2</p>
<p>p 3</p>
<span>span1</span>
<span>span2</span>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<div>
<h2>div h2 1</h2>
<h2>div h2 2</h2>
<p>div p 1</p>
<span>div span 1</span>
</div>
</div>
<button onclick="siblingsTest();">형제들 가져오기</button>
<button onclick="prevTest();">앞에 태그</button>
<button onclick="prevAllTest();">앞에 있는 전체태그</button>
<button onclick="prevAllUntilTest();">앞에 있는 전체태그 증 범위</button>
<button onclick="nextTest();">다음에 있는 태그 가져오기</button>
<script>
const nextTest=()=>{
const nextEl=$("#brocontainer>div>h2").next();
console.log(nextEl);
}
const prevAllUntilTest=()=>{
const prevAllUntil=$("#brocontainer>*").last().prevUntil("span");
prevAllUntil.css("color","crimson");
}
const prevAllTest=()=>{
const preAll=$("#brocontainer>span:eq(0)").prevAll();
console.log(preAll);
preAll.each((i,v)=>{
if($(v).prop("tagName")=='H2') $(v).css("backgroundColor","lime");
else if ($(v).prop("tagName")=='P') $(v).css("backgroundColor","purple");
});
}
const prevTest=()=>{
const preTag=$("#brocontainer>div").prev();
console.log(preTag); //div 바로 위에 있는 ul
preTag.children().css({"display":"inline"});
//div자식들
}
const siblingsTest=()=>{
// const t = $("#brocontainer>p:eq(1)").siblings();
// t.css("backgroundColor","tomato")
const t = $("#brocontainer>ul>li:eq(2)").siblings();
t.css("backgroundColor","tomato") //li의 같은레벨(형제)는 li밖에 없기 때문
}
</script>
5. 같은 레벨의 입력창 추가하기
<table>
<tbody>
<tr>
<td><input type="text"></td>
<td><button onclick="addInput(event);">추가</button></td>
</tr>
<tr>
<td><input type="text"></td>
<td><button onclick="addInput(event);">추가</button></td>
</tr>
<tr>
<td>
<input type="text">
</td>
<td>
<button onclick="addInput(event);">추가</button>
</td>
</tr>
</tbody>
</table>
<script>
const addInput=(e)=>{
const input=$("<input>").attr({
type:"text",
name:"test"
});
$(e.target).parent().prev().append(input);
}
</script>
'Jquery' 카테고리의 다른 글
Jquery - effect 함수 (0) | 2022.11.16 |
---|---|
Jquery - 이벤트 (0) | 2022.11.16 |
Jquery - 속성 변경(2) : 스타일, textNode (0) | 2022.11.16 |
Jquery - 속성 변경(1) : 클래스, 태그 (0) | 2022.11.16 |
Jquery - 태그 생성하기(2) : 태그 복사, 태그 삭제, 응용(파일업로드 설정) (0) | 2022.11.16 |
Comments