Разница между оберткой jQuery и wrapAll

Какая разница между jQuery.wrap и .wrapAll? Они в значительной степени делают то же самое, но какая может быть разница?

Ответы

Ответ 1

Обратите внимание на разницу в описаниях:

.wrap(): оберните структуру HTML вокруг элемента each в наборе согласованных элементов. .wrapAll(): оберните структуру HTML вокруг элементов all в наборе согласованных элементов.

.wrap() обертывает каждый элемент отдельно, но .wrapAll() обертывает все из них как группу.

Например:

<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>

С $('.foo').wrap('<div class="bar" />'); это происходит:

<div class="bar"><div class="foo"></div></div>
<div class="bar"><div class="foo"></div></div>
<div class="bar"><div class="foo"></div></div>

Но с $('.foo').wrapAll('<div class="bar" />'); это происходит:

<div class="bar">
  <div class="foo"></div>
  <div class="foo"></div>
  <div class="foo"></div>
</div>

Ответ 2

WrapAll обертывает ВСЕ элементы, обертывает обложки КАЖДОЙ элемент.

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

Результаты в обертке ВСЕ внутренние-divs в одном новом div

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

Оберните результаты... КАЖДЫЙ элемент

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

Ответ 3

Adding jquery to execute a wrap:

$(‘p’).wrap(‘<span class="newclass" />’);

will result in:

<span class="newclass">
<p>This is a paragraph.</p>
</span>

<span class="newclass">
<p>This is a paragraph.</p>
</span>

<span class="newclass">
<p>This is a paragraph.</p>
</span>



Substitute the .wrap for .wrapAll.

$(‘p’).wrapAll(‘<span class="newclass" />’);

will result in:

<span class="newclass">
<p>This is a paragraph.</p>
<p>This is a paragraph.</p>
<p>This is a paragraph.</p>
</span>



Now try out .wrapInner.

$(‘p’).wrapInner(‘<span class="newclass" />’);

will result in:

<p><span class="newclass">This is a paragraph.</span></p>
<p><span class="newclass">This is a paragraph.</span></p>
<p><span class="newclass">This is a paragraph.</span></p>