如何删除所有选定的链接,包括在CKEDITOR中部分选择的链接?

时间:2014-05-29 04:54:27

标签: ckeditor

我们说我目前有这个选择:

<a href="test.com">te[st</a><p>test1</p><a href="test2.com">te]st2</a>

The [] represents the selection.

我想扩展选择以包含所有<a>元素,并删除所有<a>元素。

我尝试使用startContainerendContainer扩展:

var selection = editor.getSelection();

var range = selection.getRanges()[0];

range.setStartBefore(range.startContainer.getParent());
range.setEndAfter(range.endContainer.getParent());

var style = new CKEDITOR.style( { element: 'a', type: CKEDITOR.STYLE_INLINE, alwaysRemoveElement: 1 } );
editor.removeStyle( style );

但这只删除了选择中的内容,并没有扩大选择范围。

如何扩展选择,使其包含部分选中的整个元素。

1 个答案:

答案 0 :(得分:0)

这些行:

range.setStartBefore(range.startContainer.getParent());
range.setEndAfter(range.endContainer.getParent());

只会更改range对象的属性。范围并不意味着选择,它只是分隔内容的逻辑表示。请阅读CKEDITOR.dom.range文档中的更多内容。

editor.removeStyle()方法适用于实际选择,因此上述范围修改不会影响结果。因此,您需要使用range.select()选择该范围,然后使用editor.removeStyle(),或者使用style.removeFromRange()