javascript - 使用javascript删除文本节点周围的标签

标签 javascript jquery html

如果我有一些如下所示的 HTML:

<div id="text">
      This is some text that is being written <span class="highlight">with
      a highlighted section</span> and some text following it.
</div>

我想删除将文本节点留在其中的“跨度”,我该怎么做呢?我尝试使用 jQuery 执行以下操作:

wrap = $('.highlight');
wrap.children().insertBefore(wrap);
wrap.remove();

但我猜这不起作用,因为 children 返回一个空集,因为那里只有一个文本节点。因此,所发生的只是跨度及其内容被删除。

我也对这里的方法的替代方案持开放态度。发生的事情是,当用户选择一段文本时,我的代码实际上创建了该跨度。它将所选文本包装在一个跨度中以在视觉上区分它。不过,由于 mozilla 范围对象的工作方式有些怪癖,我之后需要删除跨度。

编辑:顺便说一句,我不想​​替换“#text”的全部内容,因为它可能非常大。

最佳答案

你得到文本,并用它替换跨度:

var wrap = $('.highlight');
var text = wrap.text();
wrap.replaceWith(text);

关于javascript - 使用javascript删除文本节点周围的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1369816/

相关文章:

javascript - 检查复选框是否被选中添加值如果未选中则删除值

javascript - 如何将 document.querySelectorAll() 转换为 ReactJS?

javascript - 去除 HTML 图像中的空白

javascript - 如何使用 Fetch 在前端显示通过 HTTP (Node.js) 发送的图像?

html - div css 中的元素组

javascript - 如何在触发 ("reloadGrid"后使用 getGridParam() 获取总计数)

javascript - 元素内部 html 未清除

jquery - 当所有验证完成后,调用成功 jQuery 验证插件的函数

html - 无法使色带边缘保持在顶部

javascript - 按类别中的属性对 div 进行排序