Spec-Zone.ru › jQuery

.append()

.append( content [, content ] )Возвращает: jQuery

Описание: Вставляет контент, указанный параметром, в конец каждого элемента в наборе сопоставленных элементов.

  • версия добавлена: 1.0.append( content [, content ] )

    • content
      Тип: htmlString или Element или Text или Array или jQuery
      Элемент DOM, текстовый узел, массив элементов и текстовых узлов, строка HTML или объект jQuery, которые нужно вставить в конец каждого элемента в наборе сопоставленных элементов.
    • content
      Тип: htmlString или Element или Text или Array или jQuery
      Один или несколько дополнительных элементов DOM, текстовых узлов, массивов элементов и текстовых узлов, строк HTML или объектов jQuery, которые нужно вставить в конец каждого элемента в наборе сопоставленных элементов.
  • версия добавлена: 1.4.append( function )

    • function
      Тип: Функция( Целое число индекс, Строка html ) => htmlString или Element или Text или jQuery
      Функция, которая возвращает строку HTML, элемент(ы) DOM, текстовый(е) узел(ы) или объект jQuery, которые нужно вставить в конец каждого элемента в наборе сопоставленных элементов. Получает позицию индекса элемента в наборе и старое значение HTML элемента в качестве аргументов. Внутри функции this относится к текущему элементу в наборе.

Метод .append() вставляет указанный контент в качестве последнего дочернего элемента каждого элемента в коллекции jQuery (чтобы вставить его в качестве первого дочернего элемента, используйте .prepend()).

Методы .append() и .appendTo() выполняют ту же задачу. Основное различие заключается в синтаксисе — в частности, в расположении контента и целевого элемента. С помощью .append(), выражение селектора, предшествующее методу, является контейнером, в который вставляется контент. С помощью .appendTo(), с другой стороны, контент предшествует методу, либо как выражение селектора, либо как динамически созданный разметкой, и он вставляется в целевой контейнер.

Рассмотрим следующий HTML:

<h2>Greetings</h2>
<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>

Вы можете создать контент и вставить его сразу в несколько элементов:

$( ".inner" ).append( "<p>Test</p>" );

Каждый внутренний <div> элемент получает этот новый контент:

<h2>Greetings</h2>
<div class="container">
  <div class="inner">
    Hello
    <p>Test</p>
  </div>
  <div class="inner">
    Goodbye
    <p>Test</p>
  </div>
</div>

Вы также можете выбрать элемент на странице и вставить его в другой:

$( ".container" ).append( $( "h2" ) );

Если выбранный таким образом элемент вставляется в одно место в другом месте DOM, он будет перемещён в цель (не дублирован):

<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
  <h2>Greetings</h2>
</div>

Важно: Однако, если целевых элементов более одного, для каждого из них, кроме последнего, будут созданы клоны вставляемого элемента.

Дополнительные аргументы

Подобно другим методам добавления контента, таким как .prepend() и .before(), .append() также поддерживает передачу нескольких аргументов в качестве входных данных. Поддерживаемые входные данные включают элементы DOM, объекты jQuery, строки HTML и массивы элементов DOM.

Например, следующее вставит два новых <div> и существующий <div> в качестве трёх последних дочерних узлов тела:

var $newdiv1 = $( "<div id='object1'></div>" ),
  newdiv2 = document.createElement( "div" ),
  existingdiv1 = document.getElementById( "foo" );
 
$( "body" ).append( $newdiv1, [ newdiv2, existingdiv1 ] );

Поскольку .append() может принимать любое количество дополнительных аргументов, тот же результат можно получить, передав три <div> в качестве трёх отдельных аргументов, например: $('body').append( $newdiv1, newdiv2, existingdiv1 ). Тип и количество аргументов в значительной степени зависят от того, как вы собираете элементы в своём коде.

Дополнительные заметки:

  • По дизайну, любой конструктор или метод jQuery, принимающий строку HTML — jQuery(), .append(), .after() и т. д. — может потенциально выполнить код. Это может произойти из-за внедрения тегов скрипта или использования атрибутов HTML, которые выполняют код (например, <img onload="">). Не используйте эти методы для вставки строк, полученных из ненадежных источников, таких как параметры запроса URL, файлы cookie или данные форм. Это может привести к уязвимостям XSS (межсайтового скриптинга). Удаляйте или экранируйте любые входные данные пользователя перед добавлением контента в документ.
  • jQuery официально не поддерживает SVG. Использование методов jQuery в документах SVG, если для этого метода это не задокументировано, может привести к неожиданному поведению. Примерами методов, которые поддерживают SVG начиная с jQuery 3.0, являются addClass и removeClass.

Примеры:

Добавляет некоторый HTML ко всем абзацам.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>append demo</title>
  <style>
  p {
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<p>I would like to say: </p>
 
<script>
$( "p" ).append( "<strong>Hello</strong>" );
</script>
 
</body>
</html>

Демо:

Добавляет элемент ко всем абзацам.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>append demo</title>
  <style>
  p {
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<p>I would like to say: </p>
 
<script>
$( "p" ).append( document.createTextNode( "Hello" ) );
</script>
 
</body>
</html>

Демо:

Добавляет объект jQuery (похожий на массив элементов DOM) ко всем абзацам.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>append demo</title>
  <style>
  p {
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<strong>Hello world!!!</strong>
<p>I would like to say: </p>
 
<script>
$( "p" ).append( $( "strong" ) );
</script>
 
</body>
</html>

Демо:

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/append

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API