2017-07-27 48 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

相關問題