jquery - 如何从 div 内容中删除特定的 div 并将其发送以进行保存?

标签 jquery

我需要帮助从 div 内容中删除特定的 div。

我有这样的 html 内容:

<div class="wrapper">
    <div class="list">
        <div class="item">
            <div class="icon"></div>
            <div class="container">html content</div>
        </div>
        <div class="item">
            <div class="icon"></div>
            <div class="container">
                <div>html</div>
                <div>html</div>
                <div>html</div>
            </div>
        </div>
        <div class="item">
            <div class="icon"></div>
            <div class="container">
                <div>text</div>
                <div class="image-icon">
                    <img src="test.png">
                </div>
            </div>
        </div>
    </div>
</div>

我该怎么做:

<div class="container">html content</div>
<div class="container">
    <div>html</div>
    <div>html</div>
    <div>html</div>
</div>
<div class="container">
    <div>text</div>
    <img src="test.png">
</div>

我需要删除:

<div class="wrapper"></div>
<div class="list"></div>
<div class="item"></div>
<div class="icon"></div>
<div class="image-icon"></div>

这是我的代码:

$("#save").click(function() {
    var data = $(".list").html();
    // $(".wrapper").find(".list, .item, .icon, .image-icon").remove();
    // $.post('save.php', {
    //     contents: data
    // });
    alert(data);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper">
    <div class="list">
        <div class="item">
            <div class="icon"></div>
            <div class="container">html content</div>
        </div>
        <div class="item">
            <div class="icon"></div>
            <div class="container">
                <div>html</div>
                <div>html</div>
                <div>html</div>
            </div>
        </div>
        <div class="item">
            <div class="icon"></div>
            <div class="container">
            <div>text</div>
                <div class="image-icon">
                    <img src="test.png">
                </div>
            </div>
        </div>
    </div>
</div>

<input type="button" id="save" value="SAVE" />

https://jsfiddle.net/e8xo97dc/

最佳答案

您可以使用unwrap()删除包裹的元素和 remove()删除空元素的方法,其中使用 :empty pseudo-class selector 获取空元素.

// get all elements you want to remove
$('.wrapper,.list,.item,.icon,.image-icon')
  // filter out empty elements and remove
  .filter(':empty').remove()
  // back to the main selector
  .end()
  // get it's children elements(including textnode, commetnode... elements)
  .contents()
  // unwrap elements(will remove it's parent)
  .unwrap()

var $main = $('#main');

$main.find('.wrapper,.list,.item,.icon,.image-icon')
  .filter(':empty').remove()
  .end()
  .contents()
  .unwrap();

console.log($main.html().trim());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="main">
  <div class="wrapper">
    <div class="list">
      <div class="item">
        <div class="icon"></div>
        <div class="container">html content</div>
      </div>
      <div class="item">
        <div class="icon"></div>
        <div class="container">
          <div>html</div>
          <div>html</div>
          <div>html</div>
        </div>
      </div>
      <div class="item">
        <div class="icon"></div>
        <div class="container">
          <div>text</div>
          <div class="image-icon"><img src="test.png"></div>
        </div>
      </div>
    </div>
  </div>
</div>

关于jquery - 如何从 div 内容中删除特定的 div 并将其发送以进行保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55340343/

相关文章:

javascript - 如何使用Jquery高亮svg map ?

javascript - 页面中的多个滑动面板

javascript - 如何动态扩展对象?

javascript - 在数组中添加整数的问题

javascript - 将数据从下拉列表添加到字符串

php - 在数据表 Excel 导出零值在 PHP 中出现错误

jQuery 数据表 : Number of matching records by using search()

jquery 自动完成 ipad 隐藏键盘焦点

jquery - 使 Bootstrap 4 张卡片每行相等

javascript - 在 javascript 中查找所有没有 data- 属性的元素