2

我有一个 contenteditable div,其中有一个 span 标签,其中包含一些文本。如何选择跨度标记及其所有内容,因此当用户按退格键或删除时,跨度及其内容会被删除?

更新:当我说选择时,我的意思是突出显示。带来不便敬请谅解。

更新2:我正在考虑'element.outerHTML.select()'。看看是否有帮助。

4

3 回答 3

2

在 Firefox 中,您可以使用Selection API来执行此操作。将它与DOM2 Range API结合起来,你就拥有了你想要的东西

var r = document.createRange();
r.selectNode(domElement);
var s = window.getSelection();
s.removeAllRanges();
s.addRange(r);

选择 API 在未来的标准HTML 编辑 API中找到了自己的位置,但要在大多数浏览器中可用还需要一段时间。

于 2012-08-30T07:42:37.693 回答
1

昨天我回答了你的另一个问题。我修改了该答案随附的 jsfiddle,请重新检查shift+delete在可编辑范围内使用以调出对话框并“选择”当前范围。

于 2012-08-30T08:06:54.403 回答
0

尝试这个:

var span = document.getElementById("myspan");

span.onclick = function() {
    var range = document.createRange();
    range.selectNodeContents(span);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
};​
于 2012-08-30T07:05:34.393 回答