jQuery:将所有元素包装在一个div中但不包含在另一个div中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery:将所有元素包装在一个div中但不包含在另一个div中相关的知识,希望对你有一定的参考价值。

我有一个关于.wrapAll()的问题。到目前为止我得到了这段代码:

<div id="firstDivContainer">
  <div class="element">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
</div>

<div id="secondDivContainer">
  <div class="element">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
  <div class="element">stuff</div>
</div>

我想要另外一个包装第一套手风琴的div。所以我尝试了:

if ($('#firstDivContainer').find('.accordion').length != 0) {
  $(".accordion").wrapAll("<div id='accordionBox' />");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="firstDivContainer">
  <div class="element">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
</div>

<div id="secondDivContainer">
  <div class="element">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
  <div class="element">stuff</div>
</div>

但是他从第二组中移除了手风琴并将它们添加到第一组。结果应该是:

<div id="firstDivContainer">
  <div class="element">stuff</div>
  <div id="accordionBox">
    <div class="accordion">stuff</div>
    <div class="accordion">stuff</div>
    <div class="accordion">stuff</div>
  </div>
</div>
<div id="secondDivContainer">
  <div class="element">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
  <div class="accordion">stuff</div>
  <div class="element">stuff</div>
</div>

但相反,我得到了

<div id="firstDivContainer">
  <div class="element">stuff</div>
  <div id="accordionBox">
    <div class="accordion">stuff</div>
    <div class="accordion">stuff</div>
    <div class="accordion">stuff</div>
    <div class="accordion">stuff</div>
    <div class="accordion">stuff</div>
    <div class="accordion">stuff</div>
  </div>
</div>
<div id="secondDivContainer">
  <div class="element">stuff</div>
  <div class="element">stuff</div>
</div>

我想解决方案只是一个小小的改变,但我目前仍然坚持这个dratz。

答案

只需缩小初始选择器,所以你只在.accordion中选择#firstDivContainers:

$("#firstDivContainer .accordion").wrapAll("<div id='accordionBox' />");

JSFiddle

另一答案
$("#firstDivContainer .accordion").wrapAll("<div id='accordionBox' />");

应该这样做。

以上是关于jQuery:将所有元素包装在一个div中但不包含在另一个div中的主要内容,如果未能解决你的问题,请参考以下文章

如何获取包含其他元素中某个元素的最后一个的包装集?

Jquery 循环 - 在不破坏缩略图分页器的情况下将图像包装在 div 标签中

jQuery

选择 div 的所有包含元素

jQuery:如果DIV包含('text'),.attr到href?

在 jQuery 中获取像我这样的所有元素?