jquery 如何从div中删除空白以及所有内部内容

iqxoj9l9  于 2023-10-17  发布在  jQuery
关注(0)|答案(1)|浏览(131)

如何删除div中的白色空间和里面的所有内容?用另一种方式问:如何将trim或等效项应用于div及其所有子体。

  • div本身,孩子们,还有他们的孩子。。
  • 我不知道div有多少后代
  • 我不知道我里面有什么#左
  • 留着标签
  • 保持文字的可读性,单词之间的正常空格
  • jQuery

jQuery.这是我尝试的。
HTML示例(#left可以包含任何内容)

$("#remove").click(function() {
  //only #left:
  //var text = $("#left").html();

  //only 1rst generation:
  var text = $("#left").children().html();

  var simpleText = text.trim();
  $("#check").html(text);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="left">
  <div>
    <p> This is p</p>
  </div>
</div>

<button id="remove">Remove white space</button>
<div id="check">check</div>
wj8zmpe1

wj8zmpe11#

下面的代码删除#left内部的所有空格。这就是你想要的吗
编辑:感谢您的评论,我试图改进我的错误版本,但我找不到jQuery的解决方案。但这个版本与香草JS似乎工作。此外:这个版本使用修剪和减少多个空间,正如我“认为”,这是你正在寻找的。

$("#remove").click(function() {
  let left = document.getElementById('left');
  
  function traverse(node) {
    node.childNodes.forEach(child => {
        if(child.nodeType == 1) {
          // recurse if the node is a tag
          traverse(child);
        }
        if(child.nodeType == 3) {
          let textContent = child.textContent;
          // check if the text node has content, other than whitespace
          if(/\S/.test(textContent)) {
            let trimmed = child.textContent.trim();
            let singled = trimmed.replace(/ +/g, ' ');
            child.textContent = singled;
          }
        }
    })
  }
  
  traverse(left);
});

$("#show").click(function() {
   $('#preview').text($('#left').html());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="left">
<div>
    <p> This is  p</p>
    <div>
      <p> Another   p <span> with a span</span></p>
    </div>
</div>
</div>

<button id="remove">Trim</button>
 | 
<button id="show">Show HTML</button>

<pre id="preview">

</pre>

相关问题