Я довольно опытный в кодировании, но время от времени я сталкиваюсь с кодом, который, кажется, делает в основном то же самое. Мой главный вопрос здесь: почему бы вам использовать .append()
вместо этого .after()
или наоборот стихи?
Я искал и не могу найти четкого определения различий между ними, когда их использовать, а когда нет.
Каковы преимущества одного над другим, а также почему я должен использовать один, а не другой? Может кто-нибудь, пожалуйста, объясните мне это?
var txt = $('#' + id + ' span:first').html();
$('#' + id + ' a.append').live('click', function (e) {
e.preventDefault();
$('#' + id + ' .innerDiv').append(txt);
});
$('#' + id + ' a.prepend').live('click', function (e) {
e.preventDefault();
$('#' + id + ' .innerDiv').prepend(txt);
});
$('#' + id + ' a.after').live('click', function (e) {
e.preventDefault();
$('#' + id + ' .innerDiv').after(txt);
});
$('#' + id + ' a.before').live('click', function (e) {
e.preventDefault();
$('#' + id + ' .innerDiv').before(txt);
});
append
какие (использовать для?) ошибки, т. е. я используюappendTo
то, что кажется семантически правильным даже потому, что естьafter
(цепная цепь) - nb:after
после не внутриОтветы:
Видеть:
.append()
помещает данные внутри элемента вlast index
и.prepend()
помещает предшествующий элемент вfirst index
предположим:
когда
.append()
выполняется, это будет выглядеть так:после исполнения:
Скрипка с .append () в исполнении.
когда
.prepend()
выполняется, это будет выглядеть так:после исполнения:
Скрипка с .prepend () в исполнении.
.after()
помещает элемент после элемента.before()
помещает элемент перед элементомиспользуя после:
после исполнения:
Скрипка с .after () в исполнении.
используя раньше:
после исполнения:
Скрипка с .before () в исполнении.
источник
$("#viewPlaceHolder").append("/clients/RelationDropdown", {selected: selected });
.append()
не будет загружать его таким образом. Вы должны использовать.load(url, params)
.Это изображение отображается ниже , дает четкое представление и показывает точное различие между
.append()
,.prepend()
,.after()
и.before()
Вы можете видеть на картинке , что
.append()
и.prepend()
добавляют новые элементы в качестве дочерних элементов (коричневого цвета) к цели.И
.after()
и.before()
добавляет новые элементы в качестве родственных элементов (черного цвета) к цели.Вот ДЕМО для лучшего понимания.
РЕДАКТИРОВАТЬ: перевернутые версии этих функций:
Используя этот код :
по этой цели:
Таким образом, хотя эти функции изменяют порядок параметров, каждая создает одно и то же вложение элемента:
... но они возвращают другой элемент. Это важно для цепочки методов .
источник
append()
&prepend()
предназначены для вставки содержимого внутри элемента (делая его дочерним), аafter()
& дляbefore()
вставки содержимого вне элемента (делая его родным).источник
Лучший способ - документирование.
.append()
против.after()
append()
: Вставить содержимое, указанное параметром, в конец каждого элемента в наборе соответствующих элементов.after()
: Вставить содержимое, указанное параметром, после каждого элемента в наборе соответствующих элементов..prepend()
против.before()
prepend()
: Вставить содержимое, указанное параметром, в начало каждого элемента в наборе соответствующих элементов.before()
: Вставить содержимое, указанное параметром, перед каждым элементом в наборе соответствующих элементов.Таким образом, append и prepend относится к дочернему элементу объекта, тогда как after и before относится к родному элементу объекта.
источник
Существует принципиальная разница между
.append()
и.after()
и.prepend()
и.before()
..append()
добавляет элемент параметра внутри тега элемента селектора в самом конце, тогда как.after()
добавляет элемент параметра после тега элемента .Наоборот для
.prepend()
и.before()
.скрипка
источник
Для каждого из них нет никаких дополнительных преимуществ. Это полностью зависит от вашего сценария. Код ниже показывает их разницу.
источник
источник
Представьте DOM (HTML-страницу) как правильное дерево. Элементы HTML являются узлами этого дерева.
append()
Добавляет новый узел кchild
узлу вы назвали его.after()
Добавляет новый узел в качестве родного брата или на том же уровне или ребенка к родителю узла, называется его.источник
Чтобы попытаться ответить на ваш главный вопрос:
почему вы используете .append (), а не .after () или наоборот?
Когда вы манипулируете DOM с помощью jquery, используемые вами методы зависят от желаемого результата, и частое использование заключается в замене контента.
При замене контента вы хотите
.remove()
контент и замените его новым контентом. Если вы.remove()
используете существующий тег, а затем пытаетесь использовать.append()
его, он не будет работать, поскольку сам тег был удален, тогда как при использовании.after()
новый контент добавляется «вне» (теперь удаленного) тега и не зависит от предыдущего.remove()
,источник