CKEDITOR.htmlParser.element.remove()是否会删除该元素及其后代,还是只删除该元素并将其直接子元素放入其位置?我问,因为我已经尝试了一些方法来在过滤器中去除元素,并且结果不尽如人意。删除元素似乎不会删除应该删除的所有内容,但可能是它的预期行为。
如果是后者,删除元素及其中的所有内容的最有效方法是什么? setHtml()?
答案 0 :(得分:0)
CKEDITOR.htmlParser.node.remove删除了节点,这意味着它的子节点也被删除了。
// Removing `em` element on `setData`.
CKEDITOR.instances.editor1.on( 'toHtml', function( evt ) {
var ems = evt.data.dataValue.find( 'em', true );
console.log( 'Before: ' + evt.data.dataValue.getHtml() );
if ( ems.length ) {
ems[ 0 ].remove();
}
console.log( 'After: ' + evt.data.dataValue.getHtml() );
}, null, null, 14 );
请参阅此codepen demo。
很难在没有看到任何代码的情况下推测你的情况,但我假设你正试图操纵一些未经使用的元素或部分树的副本,所以看起来这个方法可能无法正常工作。
如果您提供代码,则可以更轻松地检查代码是否存在任何问题。