【发布时间】:2018-02-24 13:31:26
【问题描述】:
我正在开发一个使用 contenteditable 的打字工具。当用户输入一些文本时,我将其插入到 span 标签中并将其添加到主 div;结果是这样的:
<span style="color: black;">hello</span>
如果用户将插入符号放在单词“hello”中并开始输入不同的颜色,结果将是:
<span style="color: black;">he<span style="color: red;">new text</span>llo</span>
我真正想要实现的是:
<span style="color: black;">he</span>
<span style="color: red;">new text</span>
<span style="color: black;">llo</span>
我想避免嵌套 span 元素。 目前我使用这个过程来添加跨度标签:
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var spanTag = "<span id='newSpan' style='color: " + currentColor + "'>00000</span>"; // ​
var documentFragment = range.createContextualFragment(spanTag);
range.insertNode(documentFragment);
var dummySpan = document.getElementById("newSpan");
range.setStart(dummySpan, 1);
range.setEnd(dummySpan, 1);
sel.removeAllRanges();
sel.addRange(range);
$("#newSpan").removeAttr("id");
dummySpan.innerHTML = "";
我只是想知道我是否缺少一些可以帮助轻松实现此目标的 jquery 或 javascript 函数。
【问题讨论】:
-
说真的。你的问题我不清楚。你到底想达到什么目标?
-
当用户在一个 span 标签中输入内容时,我会添加另一个 span 标签,该标签嵌套在第一个标签中。我不希望这种情况发生,我只是希望所有的标签都分开而不是嵌套。
-
我编辑了帖子,希望现在更清楚了。
标签: javascript jquery html nested contenteditable