첫 번째 자식으로 요소를 삽입하는 방법은 무엇입니까?


96

버튼을 클릭 할 때마다 jquery를 사용하여 div를 첫 번째 요소로 추가하고 싶습니다.

<div id='parent-div'>
    <!--insert element as a first child here ...-->

    <div class='child-div'>some text</div>
    <div class='child-div'>some text</div>
    <div class='child-div'>some text</div>

</div> 

이 질문에 대한 답변은 빈 하위 div 요소 목록에서도 작동합니다. 큰!
Roland 19

답변:


164

$.prepend()기능을 사용해보십시오 .

용법

$("#parent-div").prepend("<div class='child-div'>some text</div>");

데모

var i = 0;
$(document).ready(function () {
    $('.add').on('click', function (event) {
        var html = "<div class='child-div'>some text " + i++ + "</div>";
        $("#parent-div").prepend(html);
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="parent-div">
    <div>Hello World</div>
</div>
<input type="button" value="add" class="add" />


이 솔루션의 문제는 부모 컨테이너에 다른 자식 요소가 포함되어 있고 특정 자식 노드 그룹 앞에 삽입하려는 경우 목록 자식이 아닌 첫 번째 자식으로 삽입된다는 것입니다.
Aurovrata 2018

처음에는이 솔루션이 child-div 요소가없는 경우에도 작동한다는 것이 분명하지 않았습니다. prepend ()는 빈 목록에 삽입하고 첫 번째 child-div 요소를 만듭니다. 물론 append ()도 작동하지만 목록은 다른 순서로 생성됩니다.
Roland 19

18

@vabhatia가 말한 것을 확장하면 JQuery없이 네이티브 JavaScript에서 원하는 것입니다.

ParentNode.insertBefore(<your element>, ParentNode.firstChild);



5
parentNode.insertBefore(newChild, refChild)

newChild 노드를 기존 자식 노드 refChild 앞에 parentNode의 자식으로 삽입합니다. (newChild를 반환합니다.)

refChild가 null이면 자식 목록 끝에 newChild가 추가됩니다. 동등하고 더 읽기 쉽게 parentNode.appendChild (newChild)를 사용하십시오.


말 그대로 다른 게시물에서 복사하여 붙여 넣었습니다. 특정 질문에 대한 참조를 제공하고 그것이 어떻게 관련되는지?
roberthuttinger dec.

1
parentElement.prepend(newFirstChild);

이것은 (아마도) ES7에 새로 추가 된 것입니다. 이제 jQuery의 인기로 인해 바닐라 JS입니다. 현재 Chrome, FF 및 Opera에서 사용할 수 있습니다. 트랜스 파일러는 모든 곳에서 사용할 수있을 때까지 처리 할 수 ​​있어야합니다.

추신 당신은 직접 문자열을 추가 할 수 있습니다

parentElement.prepend('This text!');

링크 : developer.mozilla.org - Polyfill


0

여기에 필수

<div class="outer">Outer Text <div class="inner"> Inner Text</div> </div>

추가

$(document).ready(function(){ $('.inner').prepend('<div class="middle">New Text Middle</div>'); });


-1

$(".child-div div:first").before("Your div code or some text");


아이 DIV 아래 아이 노드가 아닌
Aurovrata

-1
$('.parent-div').children(':first').before("<div class='child-div'>some text</div>");

이것은 각 자식 앞에 삽입됩니다. 즉, 여러 노드를 삽입하게됩니다.
Aurovrata 2018
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.