[jQuery] 12. append(), prepend() 사용법

[jQuery] 12. append(), prepend() 사용법

지난 글에서는 jQuery의 slideDown(), slideUp(), slideToggle()을 사용해서 요소를 접고 펼치는 방법을 알아봤습니다.

이번 글에서는 HTML 요소 안에 새로운 내용을 추가할 때 사용하는 append()prepend()에 대해 알아보겠습니다.

append()와 prepend()는 게시글 목록, 댓글 목록, 알림 목록, 장바구니 목록처럼 화면에 새로운 항목을 추가할 때 자주 사용하는 jQuery 메서드입니다.


1. append(), prepend()란?

jQuery에서 선택한 요소 안에 새로운 내용을 추가할 때 append()와 prepend()를 사용할 수 있습니다.

  • append() : 선택한 요소의 안쪽 맨 뒤에 내용을 추가합니다.
  • prepend() : 선택한 요소의 안쪽 맨 앞에 내용을 추가합니다.

둘 다 새로운 요소를 추가한다는 점은 같지만, 추가되는 위치가 다릅니다.

$("#box").append("뒤에 추가");
$("#box").prepend("앞에 추가");

2. append() 기본 사용법

append()는 선택한 요소 안쪽의 마지막 부분에 내용을 추가합니다.

📌 기본 문법

$("선택자").append("추가할 내용");

📌 예제 코드

<div id="box">
  기존 내용
</div>

<button id="appendBtn">뒤에 추가</button>

<script>
  $("#appendBtn").click(function() {
    $("#box").append("<p>새로운 문장입니다.</p>");
  });
</script>

📌 실행 결과

  • 처음에는 div 안에 "기존 내용"이 표시됩니다.
  • 뒤에 추가 버튼을 클릭합니다.
  • 기존 내용 아래쪽에 새로운 문장이 추가됩니다.
  • 버튼을 여러 번 누르면 문장이 계속 뒤에 추가됩니다.

3. prepend() 기본 사용법

prepend()는 선택한 요소 안쪽의 가장 앞부분에 내용을 추가합니다.

📌 기본 문법

$("선택자").prepend("추가할 내용");

📌 예제 코드

<div id="box">
  기존 내용
</div>

<button id="prependBtn">앞에 추가</button>

<script>
  $("#prependBtn").click(function() {
    $("#box").prepend("<p>먼저 들어가는 문장입니다.</p>");
  });
</script>

📌 실행 결과

  • 처음에는 div 안에 "기존 내용"이 표시됩니다.
  • 앞에 추가 버튼을 클릭합니다.
  • 기존 내용 위쪽에 새로운 문장이 추가됩니다.
  • 버튼을 여러 번 누르면 새 문장이 계속 앞쪽에 추가됩니다.

4. append()와 prepend() 차이

append()와 prepend()의 차이는 추가되는 위치입니다.

  • append() : 안쪽 맨 뒤에 추가합니다.
  • prepend() : 안쪽 맨 앞에 추가합니다.

📌 예제 코드

<ul id="list">
  <li>기존 항목</li>
</ul>

<button id="appendBtn">append 추가</button>
<button id="prependBtn">prepend 추가</button>

<script>
  $("#appendBtn").click(function() {
    $("#list").append("<li>뒤에 추가된 항목</li>");
  });

  $("#prependBtn").click(function() {
    $("#list").prepend("<li>앞에 추가된 항목</li>");
  });
</script>

📌 실행 결과

  • append 추가 버튼을 누르면 기존 항목 아래에 새 항목이 추가됩니다.
  • prepend 추가 버튼을 누르면 기존 항목 위에 새 항목이 추가됩니다.

5. 리스트에 항목 추가하기

append()는 목록에 새로운 li 태그를 추가할 때 많이 사용합니다.

📌 예제 코드

<ul id="todoList">
  <li>HTML 공부하기</li>
  <li>CSS 공부하기</li>
</ul>

<button id="addBtn">jQuery 추가</button>

<script>
  $("#addBtn").click(function() {
    $("#todoList").append("<li>jQuery 공부하기</li>");
  });
</script>

📌 실행 결과

  • 처음에는 HTML 공부하기, CSS 공부하기 항목이 있습니다.
  • 버튼을 클릭하면 jQuery 공부하기 항목이 아래에 추가됩니다.

6. 최신 항목을 위에 추가하기

새로운 글이나 알림을 가장 위에 보여주고 싶다면 prepend()를 사용하면 됩니다.

📌 예제 코드

<ul id="noticeList">
  <li>기존 공지 1</li>
  <li>기존 공지 2</li>
</ul>

<button id="noticeBtn">새 공지 추가</button>

<script>
  $("#noticeBtn").click(function() {
    $("#noticeList").prepend("<li>새로운 공지입니다.</li>");
  });
</script>

📌 실행 결과

  • 새 공지 추가 버튼을 클릭합니다.
  • 새로운 공지가 목록의 가장 위에 추가됩니다.
  • 최신순 목록을 만들 때 prepend()가 유용합니다.

7. input 값으로 항목 추가하기

input에 입력한 값을 가져와서 목록에 추가할 수도 있습니다.

이때는 val()과 append()를 함께 사용합니다.

📌 예제 코드

<input type="text" id="itemInput" placeholder="할 일을 입력하세요">
<button id="addBtn">추가</button>

<ul id="todoList"></ul>

<script>
  $("#addBtn").click(function() {
    var item = $("#itemInput").val();

    $("#todoList").append("<li>" + item + "</li>");
    $("#itemInput").val("");
  });
</script>

📌 실행 결과

  • input에 할 일을 입력합니다.
  • 추가 버튼을 클릭합니다.
  • 입력한 내용이 li 태그로 목록에 추가됩니다.
  • 추가 후 input 값은 비워집니다.

8. 빈 값이면 추가하지 않기

input 값이 비어 있는데도 항목이 추가되면 빈 li 태그가 생길 수 있습니다.

그래서 입력값이 비어 있는지 확인한 뒤 추가하는 것이 좋습니다.

📌 예제 코드

<input type="text" id="itemInput" placeholder="할 일을 입력하세요">
<button id="addBtn">추가</button>

<ul id="todoList"></ul>

<script>
  $("#addBtn").click(function() {
    var item = $("#itemInput").val();

    if (item === "") {
      alert("내용을 입력하세요.");
      return;
    }

    $("#todoList").append("<li>" + item + "</li>");
    $("#itemInput").val("");
  });
</script>

📌 실행 결과

  • input이 비어 있는 상태에서 추가 버튼을 클릭합니다.
  • "내용을 입력하세요."라는 alert 창이 표시됩니다.
  • 내용을 입력한 뒤 버튼을 클릭하면 목록에 정상적으로 추가됩니다.

9. trim()으로 공백 입력 막기

사용자가 스페이스만 입력하는 경우도 빈 값처럼 처리하는 것이 좋습니다.

이럴 때는 trim()을 사용해서 앞뒤 공백을 제거한 뒤 확인할 수 있습니다.

📌 예제 코드

<input type="text" id="itemInput" placeholder="할 일을 입력하세요">
<button id="addBtn">추가</button>

<ul id="todoList"></ul>

<script>
  $("#addBtn").click(function() {
    var item = $("#itemInput").val().trim();

    if (item === "") {
      alert("내용을 입력하세요.");
      return;
    }

    $("#todoList").append("<li>" + item + "</li>");
    $("#itemInput").val("");
  });
</script>

📌 실행 결과

  • 스페이스만 입력하고 추가 버튼을 클릭해도 항목이 추가되지 않습니다.
  • 실제 문자를 입력했을 때만 목록에 추가됩니다.

10. 입력값을 안전하게 추가하기

사용자가 입력한 값을 HTML 문자열로 바로 붙이면 태그처럼 해석될 수 있습니다.

단순한 글자만 추가하고 싶다면 jQuery 객체를 만든 뒤 text()로 값을 넣는 방식이 더 안전합니다.

📌 예제 코드

<input type="text" id="itemInput" placeholder="내용 입력">
<button id="addBtn">추가</button>

<ul id="list"></ul>

<script>
  $("#addBtn").click(function() {
    var item = $("#itemInput").val().trim();

    if (item === "") {
      alert("내용을 입력하세요.");
      return;
    }

    var li = $("<li></li>").text(item);

    $("#list").append(li);
    $("#itemInput").val("");
  });
</script>

📌 실행 결과

  • input에 입력한 내용이 목록에 추가됩니다.
  • 입력값은 HTML 태그가 아니라 일반 글자로 처리됩니다.

11. 여러 요소를 한 번에 추가하기

append() 안에는 여러 개의 HTML 태그를 한 번에 넣을 수도 있습니다.

📌 예제 코드

<div id="cardList"></div>

<button id="addCardBtn">카드 추가</button>

<script>
  $("#addCardBtn").click(function() {
    $("#cardList").append(
      "<div style='padding:15px; margin:10px 0; background:#eeeeee; border-radius:8px;'>" +
        "<h3>새 카드</h3>" +
        "<p>append()로 추가된 카드입니다.</p>" +
      "</div>"
    );
  });
</script>

📌 실행 결과

  • 카드 추가 버튼을 클릭합니다.
  • 제목과 문장이 들어간 카드 박스가 새로 추가됩니다.
  • 버튼을 클릭할 때마다 카드가 계속 아래에 추가됩니다.

12. append()와 html()의 차이

append()와 html()은 둘 다 HTML 내용을 다룰 수 있지만 동작 방식이 다릅니다.

  • html() : 기존 내용을 지우고 새 내용으로 바꿉니다.
  • append() : 기존 내용을 유지한 채 뒤에 새 내용을 추가합니다.
  • prepend() : 기존 내용을 유지한 채 앞에 새 내용을 추가합니다.

📌 비교 코드

// 기존 내용을 모두 바꿈
$("#box").html("<p>새 내용</p>");

// 기존 내용 뒤에 추가
$("#box").append("<p>새 내용</p>");

// 기존 내용 앞에 추가
$("#box").prepend("<p>새 내용</p>");

기존 내용을 유지하면서 계속 쌓아야 한다면 append()나 prepend()를 사용하면 됩니다.


13. 전체 예제

이번에는 입력한 내용을 최신순 또는 오래된순으로 추가할 수 있는 예제를 만들어보겠습니다.

📌 예제 코드

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>jQuery append prepend</title>
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>

  <style>
    #memoList {
      margin-top: 15px;
      padding: 0;
      list-style: none;
    }

    #memoList li {
      padding: 10px;
      margin-bottom: 8px;
      background: #eeeeee;
      border-radius: 6px;
    }
  </style>
</head>
<body>

  <h2>jQuery append(), prepend() 공부</h2>

  <input type="text" id="memoInput" placeholder="메모를 입력하세요">

  <button id="appendBtn">아래에 추가</button>
  <button id="prependBtn">위에 추가</button>

  <ul id="memoList"></ul>

  <script>
    $(function() {
      $("#appendBtn").click(function() {
        var memo = $("#memoInput").val().trim();

        if (memo === "") {
          alert("메모를 입력하세요.");
          return;
        }

        var li = $("<li></li>").text(memo);

        $("#memoList").append(li);
        $("#memoInput").val("");
      });

      $("#prependBtn").click(function() {
        var memo = $("#memoInput").val().trim();

        if (memo === "") {
          alert("메모를 입력하세요.");
          return;
        }

        var li = $("<li></li>").text(memo);

        $("#memoList").prepend(li);
        $("#memoInput").val("");
      });
    });
  </script>

</body>
</html>

📌 실행 결과

  • input에 메모를 입력합니다.
  • 아래에 추가 버튼을 클릭하면 목록의 아래쪽에 메모가 추가됩니다.
  • 위에 추가 버튼을 클릭하면 목록의 위쪽에 메모가 추가됩니다.
  • 빈 값이나 공백만 입력하면 추가되지 않습니다.

14. 자주 하는 실수

📌 1. append()와 html()을 헷갈리는 경우

html()은 기존 내용을 바꾸고, append()는 기존 내용 뒤에 추가합니다.

// 기존 내용이 사라짐
$("#list").html("<li>새 항목</li>");

// 기존 내용 뒤에 추가됨
$("#list").append("<li>새 항목</li>");

📌 2. li를 ul 밖에 추가하는 경우

li 태그는 ul이나 ol 안에 추가해야 구조가 자연스럽습니다.

// 좋지 않은 예
$("#box").append("<li>항목</li>");

// 좋은 예
$("#list").append("<li>항목</li>");

📌 3. 입력값이 비어 있는데도 추가하는 경우

입력값을 목록에 추가할 때는 빈 값인지 확인하는 과정이 필요합니다.

var item = $("#itemInput").val().trim();

if (item === "") {
  alert("내용을 입력하세요.");
  return;
}

📌 4. 클래스 선택자와 태그 문자열을 헷갈리는 경우

요소를 선택할 때와 새 요소를 만들 때 문법이 다릅니다.

// class가 item인 기존 요소 선택
$(".item")

// 새로운 li 요소 생성
$("<li></li>")

📌 5. jQuery 연결을 빼먹는 경우

append(), prepend()도 jQuery 메서드이므로 jQuery 라이브러리를 먼저 연결해야 합니다.

<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>

15. 핵심 정리

  • append()는 선택한 요소의 안쪽 맨 뒤에 내용을 추가합니다.
  • prepend()는 선택한 요소의 안쪽 맨 앞에 내용을 추가합니다.
  • html()은 기존 내용을 바꾸고, append()와 prepend()는 기존 내용을 유지합니다.
  • 리스트 항목을 추가할 때는 ul 또는 ol 안에 li를 추가하는 것이 좋습니다.
  • input 값으로 항목을 추가할 때는 val(), trim(), append()를 함께 사용할 수 있습니다.
  • 최신 항목을 위에 보여주고 싶다면 prepend()를 사용합니다.
  • 사용자 입력값은 text()로 넣으면 일반 글자로 안전하게 처리할 수 있습니다.

이번 글에서는 jQuery의 append(), prepend() 사용법에 대해 알아봤습니다.

이 두 메서드를 사용하면 기존 내용을 유지하면서 새로운 항목을 앞이나 뒤에 계속 추가할 수 있습니다.

다음 글에서는 [jQuery] 13. before(), after() 사용법에 대해 알아보겠습니다.