删除父div中的所有文本 - 将字符串保留在子项中

Xep*_*tor 2 javascript jquery

我需要删除div中的所有文本 - 但不确定如何使用jQuery或vanilla JS正确执行此操作.首先,我考虑使用.empty,但也删除了我孩子的字符串.

这是正确的方法吗?我想删除的字符串是totaal:string.这是一个动态文本,所以我无法确定目标.

<span id="span2">Totaal: <em id="headercartsum">€925</em></span>
Run Code Online (Sandbox Code Playgroud)

Aru*_*hny 7

在这种情况下,您要删除span元素的第一个子节点,这样就可以了

$('#span2').contents().eq(0).remove()
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span id="span2">Totaal: <em id="headercartsum">€925</em></span>
Run Code Online (Sandbox Code Playgroud)


或者如果要删除所有文本节点的子项

$('#span2').contents().filter(function() {
  return this.nodeType == Node.TEXT_NODE;
}).remove()
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span id="span2">Totaal: <em id="headercartsum">€925</em></span>
Run Code Online (Sandbox Code Playgroud)


基于一类em.

$('.headercartsum').map(function() {
  return this.previousSibling;
}).remove()
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span id="span2">Totaal: <em id="headercartsum" class="headercartsum">€925</em></span>
Run Code Online (Sandbox Code Playgroud)