추가기능
- $(selector).append() 엘리먼트의 맨마지막 자식요소로 추가된다.
- $(selector).prepend() 엘리먼트의 첫번째 자식요소로 추가된다.
- $(selector).after() 엘리먼트의 동생으로(뒤에) 추가된다.
- $(selector).before() 엘리먼트의 형으로(앞에) 추가된다.
* 추가기능도 메소드 체이닝을 이어갈 수 있다.
sample14-dom.jsp
<script type="text/javascript">
$(function() {
$("#btn-append").click(function() {
$("#box").append("<p class='text-danger'>append</p>")
});
$("#btn-prepend").click(function() {
$("#box").prepend("<p class='text-warning'>prepend</p>")
});
$("#btn-after").click(function() {
$("#box").after("<p class='text-primary'>after</p>")
});
$("#btn-before").click(function() {
$("#box").before("<p class='text-success'>before</p>")
});
</script>
삭제기능
- $(selector).remove() 엘리먼트를 삭제한다.(자식요소도 같이 삭제된다.)
- $(selector).empty() 엘리먼트는 남아있고 자식요소들만 삭제만 삭제된다.
* 삭제기능도 메소드 체이닝을 이어갈 수 있다.
sample14-dom.jsp
<script type="text/javascript">
$(function() {
$("#btn-empty").click(function() {
$("#box").empty()
});
$("#btn-remove").click(function() {
$("#box").remove()
});
})
</script>
HTML DOM 돌아다니기
sample15.jsp
<script type="text/javascript">
$(function() {
$("#btn-add-career-field").click(function() {
var careerFieldLength = $("#box-career :input[name=career]").length;
if(careerFieldLength >= 5) {
alert("경력사항 입력필드는 최대 4개까지만 추가 가능합니다.");
return;
}
var htmlContent = `
<div class="row ">
<div class="col-10">
<input type="text" class="form-control mb-2" name="career">
</div>
<div class="col-2 text-end pt-1">
<button type="button" class="btn btn-danger btn-xs">삭제</button>
</div>
</div>
`;
$("#box-career").append(htmlContent);
});
// <div id="box-career"> 내부에 미래에 추가된 삭제버튼을 클릭했을 경우 실행될 이벤트 핸들러 등록하기
$("#box-career").on("click", '.btn-danger', function() {
// this는 클릭이벤트가 발생할 엘리먼트다.
// $(this) 함수의 실행결과는 this를 포함하는 jQuery객체다.
// .closest('선택자')는 조상 엘리먼트 중에서 지정한 선택자에 해당하는 가장 가까운 조상엘리먼트가 포함된 jQuery객체를 반환한다. (id 부여가 가장 좋지만 그 상황이 안될 때 사용하기!)
$(this).closest('.row').remove();
});
});
</script>
클래스 조작(스타일 조작)
add와 remove를 통해 클래스 생성 /삭제
sample16.jsp
- 하나라도 선택되어 있다면 disabled가 사라지고 하나도 없다면 disabled가 생성된다.
- $변수명 = 변수에 $(jQuery객체)가 들어있는 것을 상징한다.
> 전체선택 클릭시
![](https://velog.velcdn.com/images/hcw0709/post/84d47c18-5058-4fad-bc7e-364778b98bda/image.png)
> 전체선택 해지시
![](https://velog.velcdn.com/images/hcw0709/post/bd89453a-729d-41c8-b22e-45dee794af35/image.png)
- 선택삭제 / 선택주문이 비활성화 된다.
> $함수 안에 이벤트처리 코드를 사용하는 이유
- 실행시점이 다르다.
#### toggle class
HTML DOM 돌아다니기
* 자식, 자손 검색 메소드
$(selector).children() selector의 검색된 엘리먼트의 모든 자식 엘리먼트를 선택
$(selector1).find(selector2) selector1으로 검색된 엘리먼트의 후손 엘리먼트 중에서 selector2에 해당하는 모든 후손 엘리먼트 선택
* 형제 검색 메소드
$(selector).prev() selector로 검색된 엘리먼트의 바로 윗 형 엘리먼트 선택
$(selector).prevAll() selector로 검색된 엘리먼트의 모든 형 엘리먼트들 선택
$(selector).next() selector로 검색된 엘리먼트의 바로 아래 동생 엘리먼트 선택
$(selector).nextAll() selector로 검색된 엘리먼트의 모든 동생 엘리먼트들 선택
$(selector).siblings() selector로 검색된 엘리먼트의 모든 형제 엘리먼트들 선택
![](https://velog.velcdn.com/images/hcw0709/post/714dab2b-580f-4d62-a4dc-a5083db382e9/image.png)
> Filter와 Find의 차이
![](https://velog.velcdn.com/images/hcw0709/post/efaf50f3-3501-4a85-b2ad-a6da49f81731/image.png)
선택자의 첫 번째 인것을 찾는다.
선택자의 첫 번째 자식을 잦는다.
ajax
![](https://velog.velcdn.com/images/hcw0709/post/e542f9c9-939a-4649-ab9e-5bf29964e348/image.png)
- jQuery를 통해 XHR을 다룰 수 있다.
-XHR이라는 객체를 이용해서 응답데이터를 가지고 온다.