본문 바로가기

[ programing ]/JavaScript + JQuery

jQuery 엘리먼트 감싸기 풀어내기

  • wrap(wrappingElement) : 각요소를 매개변수로 감사줍니다.
  • wrapAll(wrappingElement) : 모든 요소를 매개변수로 감싸줍니다.
  • wraplnner(wrappingElement) : 각 요소를 매개변수로 감싸줍니다.
  • unwrap(wrappingElement) : 요소를 감싸고 있는 부모엘리멘트를 제거합니다.






① wrap() 


< wrap 과 wrapAll의 차이점 >

wrap() 메서드의 경우 select한 엘리먼트의 확장 집합을 개별적으로 wrapping을 한다.

wrapAll() 메서드의 경우 select한 엘리먼트의 확장 집합의 전체를 모아 한번에 wrapping을 한다.



< wrap 과 wrapinner() 의 차이점 >

wrap() 메서드의 경우 select한 엘리먼트의 확장 집합을 개별적으로 wrapping을 한다.

wrapinner() 메서드의 경우 선택한 확장요소의 안쪽을 감싸주는 차이점이 있습니다.



<style>

#wrap { border:1px solid red; }

</style>




  $(document).ready(function(){

var el = $('#wrapper > ul > li:eq(2)');

el.wrap('<div id="wrap">'); // 아이디가 wrap인 div 태그를 생성하여 부모 엘리먼트로 만들어 줍니다. 

});



[ 변경 전 ]


<body>

<div id="wrapper">

<ul>

<li>1</li>

<li>2</li>

<li>3         //  $('#wrapper > ul > li:eq(2)');

<ul>

<li>3-1</li>

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>

</body>






[ 변경 후 ]


<ul>

<li>1</li>

<li>2</li>

<div id="wrap"><li>

<ul>

<li>3-1</li>

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li></div>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>







 unwrap() 


<script>


$(document).ready(function(){

$('#wrap > ul').unwrap();

});


</script>



[ 변경 전 ]


<ul>

<li>1</li>

<li>2</li>

<div id="wrap"><li>3  // ul태그 이하 자식들을 unwrap(); 으로 풀어주기...

<ul>

<li>3-1</li>

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li></div>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>





[ 변경 후 ]



<ul>

<li>1</li>

<li>2</li>

<li>3

<ul> // div 아이디 wrap  으로 묶어준 태그를 풀어줌..

<li>3-1</li>

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>





 remove() 


  • remove() : 선택한 확장집합( div로 묶인 엘리먼트 )의 요소 중 매개변수와 일치하는 엘리먼트를 제거합니다.

 매개변수를 생략 하면 선택한 확장집합 요소가 모두 제거됩니다.


  • empty() : 확장집합 요소의 컨텐츠를 제거합니다.





< remove()와 detach()와 메서드의 차이 >


remove()의 경우 엘리먼트를 삭제하면 바인딩된 이벤트나 저장된 데이터가 메모리에서 삭제 된다.

detach()의 경우 엘리먼트를 삭제하면 바인딩된 이벤트나 저장된 데이터가 남아 있어 

해당 엘리먼트를 변수에 담았다가 다시 붙이면 이벤트와 데이터가 남아 있는것을 불 수 있다. 





<style>

#wrap { border:1px solid red; }

</style>




<script>

$(document).ready(function(){

 $('#list > li:eq(1)').remove();

});

</script>





3-1이 두개가 들어가 있네요. 표시된 부분을 지워주세요.



[ 변경 전 ]



<body>

<div id="wrapper">

<ul>

<li>1</li>

<li>2</li>

<li>3

<ul id="list">

<li>3-1</li>

<li>3-1</li>  // $('#list > li').eq(1)

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>

</body>





[ 변경 후 ]



<body>

<div id="wrapper">

<ul>

<li>1</li>

<li>2</li>

<li>3

<ul id="list">

<li>3-1</li>


<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>

</body>






 empty()



<style>

#wrap { border:1px solid red; }

</style>



<script>

$(document).ready(function(){

var list = $('#list > li:eq(1)');  // list인 엘리먼트의 자식 엘리먼트 li에서 index가 1인 엘리먼트를 선택

list.empty(); // 콘텐츠 제거

list.text('3-1'); // 3-1 콘텐츠 추가

});

</script>



[ 변경 전 ]


<body>

<div id="wrapper">

<ul>

<li>1</li>

<li>2</li>

<li>3

<ul id="list">

<li>3-0</li>

     <li>3-11111111111</li> // $('#list > li:eq(1)');

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>

</body>




[ 변경 후 ]


<body>

<div id="wrapper">

<ul>

<li>1</li>

<li>2</li>

<li>3

<ul id="list">

<li>3-0</li>

     <li>3-1</li>

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>

</body>





 clone()



div로 묶인 확장집합을 복사합니다. 

매개변수에 true 값을 넘기면 이벤트 핸들러와 데이터를 포함한 상태로 복사합니다.


<style>

#wrap { border:1px solid red; }

</style>




<script>

$(document).ready(function(){

var cloneEl = $('#list2 > li').clone();

$('#list').append(cloneEl);

});

</script>



[ 변경 전 ]



wrapper의 영역과 wrapper2의 영역을 비교하여 보세요!


<body>

<div id="wrapper">

<ul>

<li>1</li>

<li>2</li>

<li>3

<ul id="list"> // #list에 list2를 복사하여 추가해줌...

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>


<div id="wrapper2">

<ul>

<li>1</li>

<li>2</li>

<li>3

<ul id="list2">       // $('#list2 > li').clone();

<li>3-0</li>

<li>3-1</li>

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>

</body>




[ 변경 후 ]


<div id="wrapper2">

<ul>

<li>1</li>

<li>2</li>

<li>3

<ul id="list2">

<li>3-0</li>

<li>3-1</li>

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>

</div>

</body>

</html>





<div id="wrapper">

<ul>

<li>1</li>

<li>2</li>

<li>3

<ul id="list">

<li>3-0</li><li>3-1</li><li>3-2</li><li>3-3</li><li>3-4</li><li>3-5</li></ul> // 추가된 모습

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>


<div id="wrapper2">

<ul>

<li>1</li>

<li>2</li>

<li>3

<ul id="list2">

<li>3-0</li>

<li>3-1</li>

<li>3-2</li>

<li>3-3</li>

<li>3-4</li>

<li>3-5</li>

</ul>

</li>

<li>4</li>

<li>5</li>

<li>6</li>

</ul>

</div>