admin管理员组

文章数量:1203178

Is there any predefined method in javascript that can append div after a div? For example:

<div class="uploader">
    <div class="file-metas">
        <div class="file-name">status<span class="file-size">1kb</span></div>
        <p class="state state-success">Success</p>
    </div>
</div>

Now I want to insert another div with class name 'remove' after 'uploader' div.

Is there any predefined method in javascript that can append div after a div? For example:

<div class="uploader">
    <div class="file-metas">
        <div class="file-name">status<span class="file-size">1kb</span></div>
        <p class="state state-success">Success</p>
    </div>
</div>

Now I want to insert another div with class name 'remove' after 'uploader' div.

Share Improve this question edited Jun 5, 2013 at 9:44 Derek Henderson 9,7064 gold badges45 silver badges71 bronze badges asked Jun 5, 2013 at 9:36 Anjil panchalAnjil panchal 511 gold badge1 silver badge2 bronze badges 5
  • 1 Maybe you should indent your HTML code so we can read it. :-) – fero Commented Jun 5, 2013 at 9:38
  • you can use jquery to make your task easier – rajansoft1 Commented Jun 5, 2013 at 9:40
  • @rajansoft1: I m not using jquery, so i want only javascript code – Anjil panchal Commented Jun 5, 2013 at 9:41
  • So like this one? stackoverflow.com/questions/7690582/… – Vegar Commented Jun 5, 2013 at 9:46
  • @Anjil panchal: any reason you are not using jquery? just wanted to know why you are not willing to use jquery. – rajansoft1 Commented Jun 5, 2013 at 10:11
Add a comment  | 

5 Answers 5

Reset to default 7

Vanilla JS: Supported with all the browsers:

Visualization of position names

<!-- beforebegin -->
<p>
  <!-- afterbegin -->
  foo
  <!-- beforeend -->
</p>
<!-- afterend -->

code

// <div id="one">one</div>
var d1 = document.getElementById('one');
d1.insertAdjacentHTML('afterend', '<div id="two">two</div>');

// At this point, the new structure is:
// <div id="one">one</div><div id="two">two</div>

More info here

Yeah it is possible using pure javascript

You can use insertBefore method to do so by accessing parent node of target element.

document.getElementsByClassName("uploader").parentNode

Take a look

Try this Demo

var node = document.querySelector(".uploader"),
    ele = document.createElement("div");

ele.className = "remove";
ele.innerHTML = "some text";
node.parentNode.insertBefore(ele, node.nextSibling);
function appendAfter(divToAppend, siblingBefore) {
    if(siblingBefore.nextSibling) {
        siblingBefore.parentNode.insertBefore(divToAppend, siblingBefore.nextSibling);
    } else {
        siblingBefore.parentNode.appendChild(divToAppend);
    }
}

The following example demonstrates what you are trying to achieve using plain JavaScript:

<html>
<head>

<script>

function addNewDiv() {
    var newDiv = document.createElement('div');
    var label = document.createTextNode(" - new div - ");
    var elements = document.getElementsByClassName('uploader');
    var uploaderDiv = elements[0];

    newDiv.appendChild(label);
    elements[0].insertBefore(newDiv, uploaderDiv.children[0]);
}    

</script>

</head>
<body>

<div class="uploader">
    <div class="file-metas">
        <div class="file-name">status<span class="file-size">1kb</span>
        </div>
        <p class="state state-success">Success</p>
    </div>
</div>

<input type="button" onClick="addNewDiv()" value="Add new Div" />

</body>
</html>

本文标签: Append a div after another div with javascriptStack Overflow