使用 jQuery 将元素包裹在 div 中

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/9291723/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-27 10:35:53  来源:igfitidea点击:

Wrap elements inside a div using jQuery

jqueryhtmlword-wrap

提问by stig

I have this:

我有这个:

<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
  <p>text</p>
  <p>text</p>
  <p>text</p>
  ...
</div>
<div>content element</div>
<div>content element</div>

I need to wrap all the p-tags inside a div like this:

我需要像这样将所有 p 标签包装在一个 div 中:

    <div>content element</div>
    <div class="accordionTrigger">
      <div><h1>title</h1></div>
      <div class="moreInfo">    
        <p>text</p>
        <p>text</p>
        <p>text</p>
        ...
      </div>
    </div>
    <div>content element</div>
    <div>content element</div>

can it be done with jQuery?

可以用jQuery完成吗?



If I have more than one <div class="accordionTrigger"></div>, like this:

如果我有多个<div class="accordionTrigger"></div>,就像这样:

<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
  <p>text</p>
  <p>text</p>
  ...
</div>
<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
  <p>text</p>
  <p>text</p>
  ...
</div>

the result will be:

结果将是:

<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
  <p>text</p>
  <p>text</p>
  <p>text</p>
  <p>text</p>
  ...
</div>
<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
</div>

can I avoid that?

我可以避免吗?

回答by Didier Ghys

Check the .wrapAll()method:

检查.wrapAll()方法:

$('.accordionTrigger p').wrapAll('<div class="moreInfo"></div>');

The wrapAll() method will wrap all the elements matched into another element (compared to the .wrap() method which wraps the matched elements individually)

wrapAll() 方法将所有匹配的元素包装到另一个元素中(与单独包装匹配元素的 .wrap() 方法相比)

DEMO

演示

回答by Sam T

Check this it will work out as per expectation

检查这个它会按预期工作

<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>


  <p>text</p>
  <p>text</p>
  <p>text</p>
  <script type="text/javascript"> 
      $("p").wrapAll("<div class='moreinfo'/>"); 
  </script>
</div>
<div>content element</div>
<div>content element</div>