본문 바로가기
프로그래밍/jQuery

jQuery API 정복 - 선택된 모든 요소의 앞에 추가하기, prepend()

by zoo10 2011. 11. 22.

.prepend()

원문 링크 http://api.jquery.com/prepend/

.prepend( content [, content] )Returns : jQuery

개요 : 일치하는 요소 집합의 각 요소의 시작 부분에 매개 변수에 의해 지정된 내용을 삽입합니다.

  • .prepend( content [, content] )
  • content 일치하는 요소의 집합 각 요소의 시작 부분에 삽입할 DOM 요소, 요소의 배열, HTML 문자열, 또는 jQuery 객체.
  • content 일치하는 요소의 집합 각 요소의 시작 부분에 삽입할 하나 이상의 추가적인 DOM 요소, 요소의 배열, HTML 문자열 또는 jQuery 객체.
  • .prepend( function(index, html) )
  • function(index, html) 조건에 일치하는 요소 집합의 각 요소의 시작 부분에 삽입할 HTML 문자열, DOM 요소 또는 jQuery 개체를 반환하는 함수. index 는 기존 HTML 요소값의 인덱스 위치를 말합니다. 함수 내에서 this는 현재 요소를 의미합니다.

.prepend() 함수는 jQuery 집합체(collection) 안에 있는 각 요소의 첫번째 자식 요소에 값을 삽입합니다. (마지막 자식 요소에 삽입하려면 .append()).

.prepend().prependTo() 함수의 기능은 동일합니다. 가장 큰 차이점은 문법의 차이입니다. .prepend()는, 함수 앞에 선택자 표현을 하고 선택된 요소에 함수의 인자인 내용이 삽입됩니다. 반면 .prependTo()는, 함수의 인자로 선택자가 전달되어 요소를 선택한 후 함수 앞의 내용이 삽입됩니다. (벌써 똑같은 말을 몇번 썼는지 ^^* )

매번 나오는 아래 HTML을 보시죠.

<h2>Greetings</h2>
<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>

내용을 새로 만들어서 추가해 봅니다.

$('.inner').prepend('<p>Test</p>');

<div class="inner"> 요소가 새로운 내용을 얻었습니다.

<h2>Greetings</h2>
<div class="container">
  <div class="inner">
    <p>Test</p>
    Hello
  </div>
  <div class="inner">
    <p>Test</p>
    Goodbye
  </div>
</div>

문서 상의 특정한 요소를 선택해서 다른 요소 앞에 위치 시킬수도 있습니다.

$('.container').prepend($('h2'));

만약 하나의 요소(a single element)만 선택되었다면 선택된 요소가 이동되어 집니다.(복사가 아닙니다.)

<div class="container">
    <h2>Greetings</h2>
    <div class="inner">Hello</div>
    <div class="inner">Goodbye</div>
</div>

Important: 만일 하나 이상의 타겟 요소라면 선택된 요소 집합의 첫번째 요소에는 내용이 만들어 진후 삽입되고 그 후에는 내용이 복사되면서 삽입됩니다.

추가적인 인자( Additional Arguments )

컨텐츠를 추가하는 다른 방법인 .append().before(), .prepend() 추가할 인자를 여러개 전달할 수 있도록 되어 있습니다. DOM 요소들, jQuery 객체들, HTML 문자열들, DOM 요소들의 배열값들이 해당됩니다.

예를들어, 새로운 두개의 <div> 삽입하고 기존의 하나의 <div>를 body 에 추가하는 내용을 살펴보면 아래와 같이 할 수 있습니다.

var $newdiv1 = $('<div id="object1"/>'),
    newdiv2 = document.createElement('div'),
    existingdiv1 = document.getElementById('foo');

$('body').prepend($newdiv1, [newdiv2, existingdiv1]);

그냥 예를 위한 예인것 같습니다. 실제로 이리 복잡하게 사용할까요? :) 판단은 각자가 알아서~~ ㅎㅎ

.prepend()는 다수의 추가적인 인자를 받을 수 있기 때문에, 다음과 같이 스크립트를 작성해서 세개의 <div>를 추가하는 방법을 사용할 수도 있습니다. $('body').prepend($newdiv1, newdiv2, existingdiv1). 당신의 코드에 맞게 알아서 취사선택해서 사용하세요.(라고 본문에서도 얘기하네요)

예 제  
모든 문단(p태그) 앞에 HTML을 추가해 보시죠.

<!DOCTYPE html>
<html>
<head>
  <style>p { background:yellow; }</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <p>there, friend!</p>

<p>amigo!</p>
<script>$("p").prepend("<b>Hello </b>");</script>

</body>
</html>

미리보기

Hello 문자열을 추가하는 내용입니다.

 

예 제  
모든 문단(p태그) 앞에 DOM 요소를 추가해 보시죠.

<!DOCTYPE html>
<html>
<head>
  <style>p { background:yellow; }</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <p>is what I'd say</p>
<p>is what I said</p>
<script>$("p").prepend(document.createTextNode("Hello "));</script>

</body>
</html>

미리보기

HTML이 아닌 DOM 요소를 만들어서 추가하고 있는걸 볼 수 있습니다.

 

예 제  
모든 문단(p태그) 앞에 jQuery 객체를 추가해 보시죠.

<!DOCTYPE html>
<html>
<head>
  <style>p { background:yellow; }</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <p> is what was said.</p><b>Hello</b>
<script>$("p").prepend( $("b") );</script>

</body>
</html>

미리보기

b 태그값을 선택해서 jQuery 객체로 만든 다음 추가하고 있습니다.

 

그럼 즐프하세요.

※ 본 예제는 http://www.jquery.com 에 있는 내용임을 밝힙니다.