2017-07-27 42 views
0

CKEDITOR.htmlParser.element.remove()是否删除元素及其后代,或者只是删除元素并将其直接子元素放入其位置?我问,因为我已经尝试了多种方法来在滤波器中去除元素,并且不完全符合我期望的结果;删除元素似乎并没有删除它应该的一切,但也许它是有意的行为。CKEDITOR.htmlParser.element.remove()是否也会删除子项?

如果是后者,什么是最有效的方法来删除一个元素和它里面的一切? setHtml()?

+0

对于它的价值,我已经测试过,并且使用'CKEDITOR.htmlParser.element.setHtml(“”)'确实会删除元素及其内容。 –

回答

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


这是很难在你的情况推测,没有看到任何代码,但我以为你是试图操纵它不使用任何进一步的元素或部分树的一些副本,以便它可能看起来这种方法确实不按预期工作。

如果您提供了代码,将更容易检查是否有任何问题。

+0

有趣。当我尝试使用CKEDITOR.htmlParser.node.remove()时,它删除了该节点,但是提升了其所有子节点以将其替换为树状结构,并将它们保留为原始节点父节点的子节点。至少这就是结果文档的样子...... –

+0

你可以尝试创建一个codepen(或类似的)演示显示你的情况?或者只是在这里添加一个代码来重现它呢? – f1ames

相关问题