Spec-Zone.ru › jQuery

.wrap()

.wrap( wrappingElement )Возвращает: jQuery

Описание: Оборачивает HTML-структуру вокруг каждого элемента в наборе сопоставленных элементов.

  • версия добавлена: 1.0.wrap( wrappingElement )

    • wrappingElement
      Тип: Селектор или строка HTML или элемент или jQuery
      Селектор, элемент, строка HTML или jQuery-объект, определяющий структуру для обёртывания вокруг сопоставленных элементов. При передаче jQuery-коллекции, содержащей более одного элемента, или селектора, сопоставляющего более одного элемента, будет использован первый элемент.
  • версия добавлена: 1.4.wrap( function )

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

Функция .wrap() может принимать любую строку или объект, которые можно передать в фабричную функцию $(), чтобы указать структуру DOM. Эта структура может быть вложенной на несколько уровней, но должна содержать только один самый внутренний элемент. Копия этой структуры будет обернута вокруг каждого из элементов в наборе сопоставленных элементов. Этот метод возвращает исходный набор элементов для целей цепочки вызовов.

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

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

Используя .wrap(), мы можем вставить HTML-структуру вокруг внутренних <div> элементов следующим образом:

$( ".inner" ).wrap( "<div class='new'></div>" );

Новый <div> элемент создаётся на лету и добавляется в DOM. Результатом является новая <div> структура, обернутая вокруг каждого сопоставленного элемента:

<div class="container">
  <div class="new">
    <div class="inner">Hello</div>
  </div>
  <div class="new">
    <div class="inner">Goodbye</div>
  </div>
</div>

Второй вариант этого метода позволяет вместо этого указать функцию обратного вызова. Эта функция обратного вызова будет вызываться один раз для каждого сопоставленного элемента; она должна вернуть DOM-элемент, jQuery-объект или HTML-фрагмент, в котором необходимо обернуть соответствующий элемент. Например:

$( ".inner" ).wrap(function() {
  return "<div class='" + $( this ).text() + "'></div>";
});

Это приведет к тому, что каждый <div> будет иметь класс, соответствующий тексту, который он обёртывает:

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

Примеры:

Обернуть новый div вокруг всех абзацев.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>wrap demo</title>
  <style>
  div {
    border: 2px solid blue;
  }
  p {
    background: yellow;
    margin: 4px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<p>Hello</p>
<p>cruel</p>
<p>World</p>
 
<script>
$( "p" ).wrap( "<div></div>" );
</script>
 
</body>
</html>

Демо:

Оборачивает новую иерархию объектов вокруг span-элементов. Обратите внимание, что всё между span-элементами будет опущено, например, <strong> (красный текст) в этом примере. Даже пробелы между span-элементами будут пропущены. Чтобы увидеть исходный HTML, нажмите "Посмотреть исходный код".

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>wrap demo</title>
  <style>
  div {
    border: 2px blue solid;
    margin: 2px;
    padding: 2px;
  }
  p {
    background: yellow;
    margin: 2px;
    padding: 2px;
  }
  strong {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<span>Span Text</span>
<strong>What about me?</strong>
<span>Another One</span>
 
<script>
$( "span" ).wrap( "<div><div><p><em><b></b></em></p></div></div>" );
</script>
 
</body>
</html>

Демо:

Обернуть новый div вокруг всех абзацев.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>wrap demo</title>
  <style>
  div {
    border: 2px solid blue;
  }
  p {
    background: yellow;
    margin: 4px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<p>Hello</p>
<p>cruel</p>
<p>World</p>
 
<script>
$( "p" ).wrap( document.createElement( "div" ) );
</script>
 
</body>
</html>

Демо:

Оборачивает jQuery-объект вложенного div двойной глубины вокруг всех абзацев. Обратите внимание, что он не перемещает объект, а просто клонирует его, чтобы обернуть вокруг целевого элемента.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>wrap demo</title>
  <style>
  div {
    border: 2px solid blue;
    margin: 2px;
    padding: 2px;
  }
  .doublediv {
    border-color: red;
  }
  p {
    background: yellow;
    margin: 4px;
    font-size: 14px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<div class="doublediv"><div></div></div>
 
<script>
$( "p" ).wrap( $( ".doublediv" ) );
</script>
 
</body>
</html>

Демо:

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

Spec-Zone.ru

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