Как установить элемент DOM в качестве первого дочернего элемента?
У меня есть элемент E, и я добавляю к нему некоторые элементы. Вдруг я узнаю, что следующим элементом должен быть первый ребенок Е. В чем же фишка, как это сделать? Метод unshift не работает, потому что E-это объект, а не массив.
длинный путь состоял бы в том, чтобы перебирать детей E и перемещать их ключ++, но я уверен, что есть более красивый способ.
9 ответов:
var eElement; // some E DOM instance var newFirstElement; //element which should be first in E eElement.insertBefore(newFirstElement, eElement.firstChild);
версия 2017
можно использовать
targetElement.insertAdjacentElement('afterbegin', newFirstElement)
С MDN:
метод insertAdjacentElement () вставляет данный узел элемента в заданное положение относительно элемента, на который он вызывается.
позиция
Строка DOMString, представляющая позицию относительно элемента; должна быть одной из следующих строк:beforebegin
: перед элементом себя.afterbegin
: только внутри элемента, перед его первым дочерним элементом.beforeend
: только внутри элемента, после его последнего ребенка.afterend
: после самого элемента.элемент
Элемент, который будет вставлен в дерево.в семье
insertAdjacent
есть родственные методы:
element.insertAdjacentHTML('afterbegin','htmlText')
для прямого ввода html-строки, напримерinnerHTML
но без overide все, так что вы может прыгать гнетущий процессdocument.createElement
и даже построить весь componet с процессом манипуляции строки
element.insertAdjacentText
для ввода санировать строку в элемент . нет большеencode/decode
версия 2018
parentElement.prepend(newFirstChild);
это современный JS! Это более читабельно, чем предыдущие варианты. В настоящее время он доступен в Chrome, FF и Opera.
P. S. Вы можете напрямую добавлять строки
parentElement.prepend('This text!');
Могу Ли Я Использовать - 86% окт 2018
вы можете реализовать его непосредственно я все ваши элементы html окна.
Вот так:HTMLElement.prototype.appendFirst=function(childNode){ if(this.firstChild)this.insertBefore(childNode,this.firstChild); else this.appendChild(childNode); };
принятый ответ преобразован в функцию:
function prependChild(parentEle, newFirstChildEle) { parentEle.insertBefore(newFirstChildEle, parentEle.firstChild) }
Если я не понял неправильно:
$("e").prepend("<yourelem>Text</yourelem>");
или
$("<yourelem>Text</yourelem>").prependTo("e");
хотя это звучит как из вашего описания, что есть некоторые условия прилагается, так что
if (SomeCondition){ $("e").prepend("<yourelem>Text</yourelem>"); } else{ $("e").append("<yourelem>Text</yourelem>"); }
Я думаю, что вы ищете .добавить функция в jQuery. Пример кода:
$("#E").prepend("<p>Code goes here, yo!</p>");
Я создал этот прототип для добавления элементов к родительскому элементу.
Node.prototype.prependChild = function (child: Node) { this.insertBefore(child, this.firstChild); return this; };
var newItem = document.createElement("LI"); // Create a <li> node var textnode = document.createTextNode("Water"); // Create a text node newItem.appendChild(textnode); // Append the text to <li> var list = document.getElementById("myList"); // Get the <ul> element to insert a new node list.insertBefore(newItem, list.childNodes[0]); // Insert <li> before the first child of <ul>