.wrapInner( wrappingElement )Возвращает: jQuery
Описание: Оборачивает HTML-структуру вокруг содержимого каждого элемента в наборе сопоставленных элементов.
-
версия добавлена: 1.2.wrapInner( wrappingElement )
- wrappingElementHTML-фрагмент, выражение селектора, объект jQuery или DOM-элемент, определяющий структуру, которая будет обернута вокруг содержимого сопоставленных элементов.
-
-
версия добавлена: 1.4.wrapInner( function )
- functionФункция обратного вызова, которая генерирует структуру для обёртывания содержимого сопоставленных элементов. Получает индекс позиции элемента в наборе в качестве аргумента. Внутри функции
thisссылается на текущий элемент в наборе.
-
Функция .wrapInner() может принимать любую строку или объект, который может быть передан в функцию-фабрику $(), чтобы указать DOM-структуру. Эта структура может быть вложенной на несколько уровней, но должна содержать только один внутренний элемент. Эта структура будет обернута вокруг содержимого каждого элемента в наборе сопоставленных элементов.
Рассмотрим следующий HTML:
<div class="container"> <div class="inner">Hello</div> <div class="inner">Goodbye</div> </div>
Используя .wrapInner(), мы можем вставить HTML-структуру вокруг содержимого каждого внутреннего <div> элемента следующим образом:
$( ".inner" ).wrapInner( "<div class='new'></div>");
Новый <div> элемент создается динамически и добавляется в DOM. Результатом является новая <div> структура, обернутая вокруг содержимого каждого сопоставленного элемента:
<div class="container">
<div class="inner">
<div class="new">Hello</div>
</div>
<div class="inner">
<div class="new">Goodbye</div>
</div>
</div> Вторая версия этого метода позволяет вместо этого указать функцию обратного вызова. Эта функция обратного вызова будет вызываться один раз для каждого сопоставленного элемента; она должна возвращать DOM-элемент, объект jQuery или HTML-фрагмент, в который нужно обернуть содержимое соответствующего элемента. Например:
$( ".inner" ).wrapInner(function() {
return "<div class='" + this.nodeValue + "'></div>";
}); Это приведет к тому, что каждый <div> будет иметь класс, соответствующий тексту, который он оборачивает:
<div class="container">
<div class="inner">
<div class="Hello">Hello</div>
</div>
<div class="inner">
<div class="Goodbye">Goodbye</div>
</div>
</div> Примечание: При передаче строки селектора в функцию .wrapInner(), ожидается, что входные данные являются правильно сформированным HTML с правильно закрытыми тегами. Примеры допустимых входных данных включают:
$( elem ).wrapInner( "<div class='test'></div>" ); $( elem ).wrapInner( "<div class=\"test\"></div>" );
Примеры:
Выбирает все абзацы и оборачивает тег bold вокруг содержимого каждого из них.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrapInner demo</title>
<style>
p {
background: #bbf;
}
</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" ).wrapInner( "<b></b>" );
</script>
</body>
</html> Демо:
Оборачивает новую иерархию объектов вокруг внутренней части тела.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrapInner demo</title>
<style>
div {
border: 2px green solid;
margin: 2px;
padding: 2px;
}
p {
background: yellow;
margin: 2px;
padding: 2px;
}
</style>
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
Plain old text, or is it?
<script>
$( "body" ).wrapInner( "<div><div><p><em><b></b></em></p></div></div>" );
</script>
</body>
</html> Демо:
Выбирает все абзацы и оборачивает тег bold вокруг содержимого каждого из них.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrapInner demo</title>
<style>
p {
background: #9f9;
}
</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" ).wrapInner( document.createElement( "b" ) );
</script>
</body>
</html> Демо:
Выбирает все абзацы и оборачивает объект jQuery вокруг содержимого каждого из них.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrapInner demo</title>
<style>
p {
background: #9f9;
}
.red {
color: red;
}
</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" ).wrapInner( $( "<span class='red'></span>" ) );
</script>
</body>
</html>