Reputation: 1413
I want to add a div as a first element using jquery on each click of a button
<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>
Upvotes: 123
Views: 145786
Reputation: 631
$('.parent-div').children(':first').before("<div class='child-div'>some text</div>");
Upvotes: 1
Reputation: 47237
parentElement.prepend(newFirstChild);
This is a new addition in (likely) ES7. It is now vanilla JS, probably due to the popularity in jQuery. It is currently available in Chrome, FF, and Opera. Transpilers should be able to handle it until it becomes available everywhere.
P.S. You can directly prepend strings
parentElement.prepend('This text!');
Links: developer.mozilla.org - Polyfill
Upvotes: 5
Reputation: 7605
Required here
<div class="outer">Outer Text
<div class="inner"> Inner Text</div>
</div>
added by
$(document).ready(function(){
$('.inner').prepend('<div class="middle">New Text Middle</div>');
});
Upvotes: 0
Reputation: 1107
Extending on what @vabhatia said, this is what you want in native JavaScript (without JQuery).
ParentNode.insertBefore(<your element>, ParentNode.firstChild);
Upvotes: 25
Reputation: 5655
Try the $.prepend()
function.
$("#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" />
Upvotes: 197
Reputation: 4396
parentNode.insertBefore(newChild, refChild)
Inserts the node newChild as a child of parentNode before the existing child node refChild. (Returns newChild.)
If refChild is null, newChild is added at the end of the list of children. Equivalently, and more readably, use parentNode.appendChild(newChild).
Upvotes: 6
Reputation: 321
Use: $("<p>Test</p>").prependTo(".inner");
Check out the .prepend documentation on jquery.com
Upvotes: 7