본문 바로가기

프로그래밍/jQuery

[jquery] replaceWith 메서드 사용법과 예제 소스

by GenieIT* 2024. 12. 20.

728x90
반응형
728x90
반응형

 

1. replaceWith() 메서드란?

  • replaceWith()는 jQuery를 사용하여 선택한 DOM 요소를 새 콘텐츠로 대체하는 메서드입니다. 대체 작업 후 기존 요소는 DOM에서 제거되고, 새 콘텐츠가 기존 요소의 위치를 차지합니다.

 


 

2. 기본 문법

$(selector).replaceWith(newContent);
  • selector: 대체할 대상 요소를 선택.
  • newContent: 대체할 새 HTML, 텍스트, DOM 요소, 또는 jQuery 객체.

 


 

3. 작동 방식

  • replaceWith()는 선택된 요소를 DOM에서 제거하고, 새 콘텐츠로 교체합니다.
  • 새 콘텐츠는 교체된 요소와 동일한 위치에 삽입됩니다.

 


 

4. 사용 예제

4-1. 단일 요소 대체

<div id="oldDiv">Old Content</div>
$('#oldDiv').replaceWith('<p>New Content</p>');

결과 :

<p>New Content</p>

 

 

4-2. 여러 요소 대체

<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>
$('li').replaceWith('<p>Replaced Item</p>');

결과 :

<p>Replaced Item</p>
<p>Replaced Item</p>
<p>Replaced Item</p>

 

 

4-3. 기존 요소를 새 콘텐츠로 대체

<div class="replace-me">Replace me</div>
<div class="replace-me">Replace me too</div>
$('.replace-me').replaceWith(function() {
    return `<p>New content for ${$(this).text()}</p>`;
});

결과 :

<p>New content for Replace me</p>
<p>New content for Replace me too</p>

 

 

4-4. 폼 요소 대체

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  <script>
	$(document).ready(function() {
		$('#username').replaceWith('<input type="text" id="username" value="New Value">');
	});
  </script>
</head>
<body>
	<input type="text" id="username" value="Old Value">
</body>
</html>

 

 

4-5. 경고 메세지 업데이트

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  <script>
	$(document).ready(function() {
		$('.alert').replaceWith('<div class="alert">This is a new message!</div>');
	});
  </script>
</head>
<body>
	<div class="alert">This is an old message.</div>
</body>
</html>

 


 

5. 주의 사항

  • replaceWith()를 사용하면 교체된 요소에 바인딩된 이벤트 핸들러와 데이터는 새로 생성된 요소로 이전되지 않습니다.
<div id="example">Click me</div>
$('#example').on('click', function() {
    alert('Clicked!');
});

$('#example').replaceWith('<p id="example">Replaced!</p>');

// 새로 생성된 <p> 요소는 클릭 이벤트가 바인딩되지 않음

해결 방법 : 

1) 이벤트 위임 사용 :

$(document).on('click', '#example', function() {
    alert('Clicked!');
});

2) 이벤트 재바인딩 :

const newElement = $('<p id="example">Replaced!</p>');
newElement.on('click', function() {
    alert('Clicked!');
});
$('#example').replaceWith(newElement);

 


 

 

 

728x90
반응형