관리 메뉴

FU11M00N

[ JavaScript ] JS jQuery 노드 (추가,제거,변경,복사,복사,이동) 본문

SUA 정보보안/JavaScript

[ JavaScript ] JS jQuery 노드 (추가,제거,변경,복사,복사,이동)

호IT 2021. 2. 8. 22:38

이미지 출처 :    https://www.inflearn.com/course/javascript-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%95%EC%A2%8C#

 

생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅입니다.

 

 

 


 

 

 

 

-  jQuery 노드 변경 API

 

 

jQuery에서 노드를 제어하는 기능은 주로 Manipulation 카테고리에 속해 있습니다.

 

 

아래 링크는 jquery api manipulation 관련 링크입니다.

 

 

http://api.jquery.com/category/manipulation/

 

Manipulation | jQuery API Documentation

Adds the specified class(es) to each element in the set of matched elements. Insert content, specified by the parameter, after each element in the set of matched elements. Insert content, specified by the parameter, to the end of each element in the set of

api.jquery.com

 

 

 

 

- 추가

 

추가와 관련된 주요한 메소드는 4가지입니다.

 

 

각각의 관계를 그림은 아래와 같습니다.

 

 

 

 

 

div 태그가 있다면, 그 div 태그 밖에 형제 관계로 추가되는 것이 before 와 after 입니다.

 

prepend 와 append 는 하위로 추가됩니다.

 

 

 

- 추가 예제

 

<div class="target">
    content1
</div>
 
<div class="target">
    content2
</div>
 
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
    $('.target').before('<div>before</div>');
    $('.target').after('<div>after</div>');
    $('.target').prepend('<div>prepend</div>');
    $('.target').append('<div>append</div>');
</script>

 

 

 

 

 

 

 

 

- 제거

 

 

제거와 관련된 API는 remove와 empty가 있습니다.

 

remove는 선택된 엘리먼트를 제거하는 것입니다.

 

empty는 선택된 엘리먼트의 텍스트 노드를 제거하는 것입니다.

 

 

- 제거 예제

 

 

 

<div class="target" id="target1">
    target 1
</div>
 
<div class="target" id="target2">
    target 2
</div>
 
<input type="button" value="remove target 1" id="btn1" />
<input type="button" value="empty target 2" id="btn2" />
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
    $('#btn1').click(function(){
        $('#target1').remove();
    })
    $('#btn2').click(function(){
        $('#target2').empty();
    })
</script>

 

 

아래 그림은 첫번째 버튼(#btn1) 을 눌렀을 때의 html 결과입니다.

 

 

 

 

target1 이라는 id 를 가진 div 태그 자체가 사라진 것을 알 수 있습니다.

 

 

btn2 를 누르면 아래와같이 됩니다.

 

 

 

 

빨간색 사각형을 보면, div 태그안에 텍스트가 사라진 것을 확인가능합니다.

 

 

 

 

 

- 변경

 

 

replaceAll과 replaceWith는 모두 노드의 내용을 교체하는 API입니다.

 

replaceWith가 제어 대상을 먼저 지정하는 것에 반해서 replaceAll은 제어 대상을 인자로 전달합니다.

 

 

 

 

 

- 변경 예제

<div class="target" id="target1">
    target 1
</div>
 
<div class="target" id="target2">
    target 2
</div>
 
<input type="button" value="replaceAll target 1" id="btn1" />
<input type="button" value="replaceWith target 2" id="btn2" />
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
    $('#btn1').click(function(){
        $('<div>replaceAll</div>').replaceAll('#target1');
    })
    $('#btn2').click(function(){
        $('#target2').replaceWith('<div>replaceWith</div>');
    })
</script>

 

 

 

 

replaceAll 은 바꿀 내용이 우선적으로 오고, 바뀔 대상이 뒤에 옵니다.

 

replaceWith 은 바뀔 대상이 앞에, 바꿀 내용이 뒤에 옵니다.

 

둘이 헷갈릴수도있으니 유의해야합니다.

 

 

 

 

 

 

- 복사

 

노드를 복사할때는 clone을 사용하면 됩니다.

 

 

 

- 복사 예제

<div class="target" id="target1">
    target 1
</div>
 
<div class="target" id="target2">
    target 2
</div>
 
<div id="source">source</div>
 
<input type="button" value="clone replaceAll target 1" id="btn1" />
<input type="button" value="clone replaceWith target 2" id="btn2" />
<script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
    $('#btn1').click(function(){
        $('#source').clone().replaceAll('#target1');
    })
    $('#btn2').click(function(){
        $('#target2').replaceWith($('#source').clone());
    })
</script>

 

clone 을 이용해서 복사하고, 복사한 내용을 replaceAll 과 replaceWith 을 통해

원래의 요소와 바꾼 코드입니다.

 

 

실행하면 다음 그림과 같습니다.

 

 

 

 

 

 

- 이동

 

 

dom manipulation API의 인자로 특정 노드를 선택하면 이동의 효과가 납니다.

 

 

 

 

- 이동 예제

<div class="target" id="target1">
    target 1
</div>
 
<div id="source">source</div>
 
<input type="button" value="append source to target 1" id="btn1" />
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
    $('#btn1').click(function(){
        $('#target1').append($('#source'));
    })
</script>

 

 

 

 

 

버튼을 누르면 sourece 가 target1 안으로 append 된 것을 확인 할 수 있습니다.

 

 

 

 

 

 

 

 

 

SUA 정보보안 멘토링에 참여하고 있습니다.

 

 

 

 

Comments