Làm thế nào để chèn phần tử như một phần tử con đầu tiên?


96

Tôi muốn thêm div làm phần tử đầu tiên bằng cách sử dụng jquery trên mỗi lần nhấp vào nút

<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> 

Các câu trả lời cho câu hỏi này cũng hoạt động với danh sách trống các phần tử div con. Tuyệt quá!
Roland

Câu trả lời:


162

Hãy thử $.prepend()chức năng.

Sử dụng

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

Bản giới thiệu

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" />


vấn đề với giải pháp này là nó sẽ chèn dưới dạng phần tử con đầu tiên chứ không phải trước phần tử con của danh sách, nếu vùng chứa cha chứa các phần tử con khác nhau và một người muốn chèn trước một nhóm nút con cụ thể, điều này sẽ không hoạt động.
Aurovrata

Lúc đầu, tôi không rõ rằng giải pháp này cũng hoạt động nếu không có phần tử div con nào. prepend () sẽ chèn vào danh sách trống và tạo phần tử div con đầu tiên. Tất nhiên, append () cũng hoạt động, nhưng danh sách được tạo theo thứ tự khác.
Roland

17

Mở rộng những gì @vabhatia đã nói, đây là những gì bạn muốn trong JavaScript gốc (không có JQuery).

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



5
parentNode.insertBefore(newChild, refChild)

Chèn nút newChild dưới dạng con của parentNode trước refChild của nút con hiện có. (Trả về newChild.)

Nếu refChild là null, newChild sẽ được thêm vào cuối danh sách con. Tương tự, và dễ đọc hơn, hãy sử dụng parentNode.appendChild (newChild).


sao chép và dán từ một bài viết khác theo nghĩa đen. có lẽ cung cấp tài liệu tham khảo cho câu hỏi cụ thể và nó liên quan như thế nào?
roberthuttinger 12/1217

1
parentElement.prepend(newFirstChild);

Đây là một bổ sung mới trong (có thể) ES7. Bây giờ nó là vanilla JS, có lẽ là do sự phổ biến trong jQuery. Nó hiện có sẵn trong Chrome, FF và Opera. Transpilers sẽ có thể xử lý nó cho đến khi nó có sẵn ở khắp mọi nơi.

PS Bạn có thể thêm trực tiếp các chuỗi

parentElement.prepend('This text!');

Liên kết: developer.mozilla.org - Polyfill


0

Bắt buộc ở đây

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

thêm bởi

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


-1

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


không có trẻ em nút bên dưới con-div
Aurovrata

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

điều này sẽ chèn trước mỗi nút con, tức là bạn sẽ chèn nhiều nút.
Aurovrata
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.