CKEDITOR.htmlParser.element.remove()是否也删除了孩子?

时间:2017-07-27 04:03:13

标签: ckeditor

CKEDITOR.htmlParser.element.remove()是否会删除该元素及其后代,还是只删除该元素并将其直接子元素放入其位置?我问,因为我已经尝试了一些方法来在过滤器中去除元素,并且结果不尽如人意。删除元素似乎不会删除应该删除的所有内容,但可能是它的预期行为。

如果是后者,删除元素及其中的所有内容的最有效方法是什么? setHtml()?

1 个答案:

答案 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

很难在没有看到任何代码的情况下推测你的情况,但我假设你正试图操纵一些未经使用的元素或部分树的副本,所以看起来这个方法可能无法正常工作。

如果您提供代码,则可以更轻松地检查代码是否存在任何问题。