如果我有一些如下所示的 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/