我们说我目前有这个选择:
<a href="test.com">te[st</a><p>test1</p><a href="test2.com">te]st2</a>
The [] represents the selection.
我想扩展选择以包含所有<a>
元素,并删除所有<a>
元素。
我尝试使用startContainer
和endContainer
扩展:
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 );
但这只删除了选择中的内容,并没有扩大选择范围。
如何扩展选择,使其包含部分选中的整个元素。
答案 0 :(得分:0)
这些行:
range.setStartBefore(range.startContainer.getParent());
range.setEndAfter(range.endContainer.getParent());
只会更改range
对象的属性。范围并不意味着选择,它只是分隔内容的逻辑表示。请阅读CKEDITOR.dom.range
文档中的更多内容。
editor.removeStyle()
方法适用于实际选择,因此上述范围修改不会影响结果。因此,您需要使用range.select()
选择该范围,然后使用editor.removeStyle()
,或者使用style.removeFromRange()
。