javascript - 拆分文本节点

标签 javascript html css

我有 div[contenteditable=true]。文本可以是粗体/斜体/下划线。

<div contenteditable=true>
  <b>Text</b>
</div>

我需要将文本节点拆分为 2 个 block :。

<div contenteditable=true>
  <b>Te</b><b>xt</b>
</div>

仅适用于 Chrome 和 Safari。

最佳答案

Text.splitText .

var b = document.querySelectorAll("div[contenteditable='true'] > *")[0];
var p = b.parentNode; // the element's parent
var t = b.firstChild; // the textNode content

var newText = t.splitText(2);    // splits the node, leaving it in place
var copy = document.createElement(b.tagName);  // make another wrapper
copy.appendChild(b.lastChild);  // move second text into the copy
p.insertBefore(copy, b.nextSibling);  // put the copy into the DOM.

参见 http://jsfiddle.net/alnitak/JbEnL/

正如您指定的 Chrome 和 Safari,我使用了 querySelectorAll 来查找初始内部 DOM 元素。

关于javascript - 拆分文本节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12319466/

相关文章:

php - Wordpress 作为 CMS,调用内容 Issue

css - 编写 Sass 或类似软件的工作流程是什么?

javascript - 如何设置点击图标时可见的密码

javascript - 如何为将 gmail 作为默认邮件处理程序的用户在新选项卡中打开 mailto 链接?

java - 从网页启动小程序

javascript - Div 中的换行符

jquery - 如何使用 css 或 jquery 在焦点上自动隐藏占位符文本?

javascript - 滚动事件在移动设备上不起作用

html - css 网格中的长文本不会内联

php - 多词 href 链接将单词放在 HTML/CSS 中?