如何使用jQuery将项目 Package 在容器中的details中?

gc0ot86w  于 2023-05-17  发布在  jQuery
关注(0)|答案(2)|浏览(116)

我不能更改标记,因为它是由我的CMS生成的。
因此,我需要当前的标记:

<details class="js-form-wrapper>
  <summary></summary>
  <div></div>
  <div></div>
  <table class="responsive"></table>
  <div class="js-form-type-managed-file"></div>
</details>

使用jQuery变成这样:

<details class="js-form-wrapper>
    <summary></summary>
    <div></div>
    <div></div>
  <div class="my-wrapper">
    <table class="responsive"></table>
    <div class="js-form-type-managed-file"></div>
  </div>
</details>
8yoxcaq7

8yoxcaq71#

您可以使用.wrapAll()并调用多个元素,因为它们不在一个父标记下

<details class="js-form-wrapper">
  <summary>summ</summary>
  <div>div 1</div>
  <div>div 2</div>
  <table class="responsive"></table>
  <div class="js-form-type-managed-file">child</div>
</details>
$(".js-form-wrapper table, .js-form-type-managed-file").wrapAll('<div class="my-wrapper"></div>');
$(document).ready(function() {
  $(".js-form-wrapper table, .js-form-type-managed-file").wrapAll('<div class="my-wrapper"></div>');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<details class="js-form-wrapper">
  <summary>summary</summary>
  <div>div 1</div>
  <div>div 2</div>
  <table class="responsive"></table>
  <div class="js-form-type-managed-file">inspect here to see wrap</div>
</details>
xnifntxz

xnifntxz2#

可能有几种方法可以做到这一点,但一个简单的方法是:

$('table').next().addBack().wrapAll('<div class="my-wrapper">');
$('details table').next().addBack().wrapAll('<div class="my-wrapper">');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<details class="js-form-wrapper">
  <summary></summary>
  <div></div>
  <div></div>
  <table class="responsive"></table>
  <div class="js-form-type-managed-file "></div>
</details>

相关问题