티스토리 뷰
사실 jQuery를 사용하는 가장 큰 이유 중 하나가 바로 동적으로 어떤 요소를 추가하거나 삭제하기 편리하다는 점일 것이다.
이번 포스팅에서는 세상 편리하게 동적으로 html 요소를 추가하는 몇 가지 방법을 작성해보려고 한다.
바로 확인해보자.
1. append: 동적으로 html 태그를 추가하는 함수
1) 테이블 동적 추가
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM 요소 생성 후 원하는 요소에 추가</title>
<style type="text/css">
.Yellow {
background-color: Yellow
}
.Green {
background-color: Green
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// append() : 동적으로 html 태그를 추가하는 함수
// empty() : 동적으로 html의 특정 요소 내부를 초기화하는 함수
// 1. #lblDisplay 내부를 초기화하고 "네이버" 삽입
$('#lblDisplay').empty(); // #lblDisplay 자체가 아닌 내부의 <b> 태그 삭제
var strHtml = $("<a href = '#'>네이버</a><hr/>");
$('#lblDisplay').append(strHtml);
// 2. #btnCreate 클릭 시 #lblTable에 테이블 추가
$('#btnCreate').click(function() {
$('#lblTable').empty();
var row = $('#row').val();
var col = $('#col').val();
var strTable = "<table border = '1'>";
for(var i = 0; i < row; i++) {
strTable = strTable + "<tr>";
for(var j = 0; j < col; j++) {
strTable += "<td>" + (i+1) + "행" + (j+1) + "열 </td>";
}
strTable += "</tr>";
}
$('#lblTable').append(strTable);
$('tr:odd').addClass('Yellow');
$('tr:even').addClass('Green');
});
});
</script>
</head>
<body>
<!--동적으로 태그 추가 -->
<span id="lblDisplay"><b>여기에 태그 추가</b></span>
<!--동적으로 테이블 추가 -->
<input type="text" id="row" />행
<input type="text" id="col" />열
<input type="button" id="btnCreate" value="테이블 동적 생성" />
<div id="lblTable"></div>
</body>
</html>
2) 특정 용어에 대해서 번호 붙이기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>특정 용어에 대해서 번호 붙이기</title>
<style type="text/css">
.Chapter {
background-color: Silver;
}
.Content {
height: 100px;
border: 1px solid red;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.term').each(function(idx) {
$(this).append("<sub>" + (idx+1) + "</sub>");
});
});
</script>
</head>
<body>
<h3>jQuery is a new kind of JavaScript Library</h3>
<div>
<span class="term">jQuery</span> is a fast and concise
<span class="term">JavaScript</span> Library that simplifies
<span class="term">HTML</span> document traversing, event handling,
animating, and <span class="term">Ajax</span> interactions for rapid
web development. jQuery is designed to change the way that you write
JavaScript.
</div>
</body>
</html>
2. insertAfter() or before() : 어느 요소 뒤나 앞에 특정 요소를 추가하는 함수
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM 요소의 앞/뒤에 요소추가</title>
<style type="text/css">
.Chapter {
background-color: Silver;
}
.Content {
height: 100px;
border: 1px solid red;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 어떤 요소를.insertAfter('어느 요소 뒤에')
$('<hr />').insertAfter(".Content");
//Content 클래스 뒤에 구분선을 추가
// 어느 요소 앞에.before('어떤 요소를')
$('p.Chapter:gt(0)').before("<a href = '#'>TOP</a>");
//p 태그의 Chapter의 인덱스가 0보다 큰 요소 앞에 TOP 추가
});
</script>
</head>
<body>
<p class="Chapter">1 장</p>
<div class="Content">내용1...</div>
<p class="Chapter">2 장</p>
<div class="Content">내용2...</div>
<p class="Chapter">3 장</p>
<div class="Content">내용3...</div>
</body>
</html>
3. wrap() : 특정 요소를 다른 요소로 감싸기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>검색된 요소를 특정 태그로 감싸기(wrap)</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 어떤 요소를 .wrap('어떤 요소로') 감싸는 함수
$('h3').wrap("<u></u");
$('<ol type = "1" id = "community"> </ol>').insertAfter('a:eq(0)');
$('a').each(function(idx) {
$(this).appendTo("#community").wrap("<li></li>");
});
});
</script>
</head>
<body>
<h3>.NET 기술 관련 커뮤니티</h3>
<a href="http://www.asp.net/">ASP.NET</a>
<a href="http://www.silverlight.net/">Silverlight</a>
<a href="http://www.windowsclient.net/">WPF</a>
<a href="http://www.dotnetkorea.com/">.NET All(?)</a>
</body>
</html>
4. clone() : 요소 복제
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>검색된 요소를 복사하기</title>
<style type="text/css">
#menu {
background-color: Blue;
color: White;
}
#submenu {
background-color: Silver;
}
#content {
height: 100px;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
//어떤 요소를 .clone() => 요소 복제만 하는 함수
$('#menu').clone().insertBefore('#submenu');
});
</script>
</head>
<body>
<div id="menu">HOME About</div>
<div id="content">상단 메뉴를 아래 하단메뉴에 복사</div>
<div id="submenu">여기는 하단메뉴 들어오는 곳</div>
</body>
</html>
5. replaceWith(): 요소 대체
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>검색된 요소를 변경하기</title>
<style type="text/css">
button {
display: block;
margin: 3px;
color: Red;
width: 200px;
}
div {
color: Red;
border: 2px solid blue;
width: 200px;
margin: 3px;
text-align: center;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 어떤 요소를 .replace('어떤 요소로'): 변경
$('button').click(function() {
$(this).replaceWith("<div>" + $(this).text() + "</div>");
});
});
</script>
</head>
<body>
<button>First</button>
<button>Second</button>
<button>Third</button>
</body>
</html>
6. remove() : 검색된 요소를 완전히 제거
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>검색된 요소를 완전 제거</title>
<style type="text/css">
div {
background-color: Yellow;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 제거할 요소.remove() : 실제 요소가 삭제(제거)
$('#btnEmpty').click(function() {
$('div').empty();
$('div').append("<b>테스트</b>");
})
$('#btnRemove').click(function() {
$('div').remove;
})
});
</script>
</head>
<body>
<div>
<p>jQuery</p>
<p>Ajax</p>
</div>
<input type="button" id="btnEmpty" value="위 영역 비우기" />
<input type="button" id="btnRemove" value="위 영역 삭제" />
</body>
</html>
반응형
'WEB > jQuery' 카테고리의 다른 글
[jQuery] 비동기식 페이지 로드, load() (0) | 2021.06.07 |
---|---|
[jQuery] Effects (0) | 2021.06.07 |
[jQuery] Traversing (0) | 2021.06.07 |
[jQuery] bind & unbind (0) | 2021.06.07 |
[jQuery] 다양한 Selector 이용 (0) | 2021.06.07 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- 파니노구스토
- react-native
- 맛집
- Async
- 인천 구월동 맛집
- 정보보안기사 #실기 #정리
- redux-thunk
- 이탈리안 레스토랑
- redux
- react
- AsyncStorage
- javascript
- 인천 구월동 이탈리안 맛집
- await
- Promise
- Total
- Today
- Yesterday