CKEditor:如何从表格单元格中删除p元素?

CKEditor:如何从表格单元格中删除p元素?,ckeditor,filtering,Ckeditor,Filtering,我开始在我的一个项目中使用CKEditor,我很喜欢它。有一件事我无法理解或发现,那就是如何在另一个元素中禁止一个元素。我不允许p出现在表单元格th或td中 这: 我的CKEditor初始化如下: CKEDITOR.replace( 'id_text', { allowedContent: 'table(table); table(table-striped); thead tbody tfoot tr td th;', toolbar: [ ['Source']

我开始在我的一个项目中使用CKEditor,我很喜欢它。有一件事我无法理解或发现,那就是如何在另一个元素中禁止一个元素。我不允许p出现在表单元格th或td中

这:

我的CKEditor初始化如下:

CKEDITOR.replace( 'id_text', {
    allowedContent: 'table(table); table(table-striped); thead tbody tfoot tr td th;',
    toolbar: [
        ['Source'], 
        ['Format'], 
        ['Table']
    ]
});

allowedContent属性似乎不处理父子规则。当标记出现在其他元素中时,我如何筛选元素?

我找不到内置的CKEditor设置来禁止标记出现在其他标记中。但我确实在和找到了关于CKEditor过滤内容的示例

这些文章和缺少的“disallowContent”设置使我转向了另一个方向:粘贴上的清理+服务器端清理

CKEditor发出诸如、更改等信号。下一个脚本在粘贴时添加一个侦听器。所有出现的Foo都将替换为Bar

CKEDITOR.on('instanceReady', function(ev) {
   ev.editor.on('paste', function(evt) {
   evt.data.dataValue = evt.data.dataValue.replace( /Foo/g, 'Bar' );
   }, 9);
});
我在Django管理站点中使用CKEditor,并提供jQuery。下一个脚本将上述内容与jQuery DOM操作结合起来。每个选定元素都将替换为其自己的内容

var $ = django.jQuery;

CKEDITOR.on("instanceReady", function( ev ) {
    ev.editor.on("paste", function( evt ) {
        var data = $.parseHTML(evt.data.dataValue);
        $( "th p, td p", data).each( function() {
            $( this ).replaceWith(  $( this ).contents() );
            });
        evt.data.dataValue = $('<div>').append(data).html();
        }, 9);
    });
注意:仍然可以通过源模式或格式菜单在表格单元格中插入段落。这些段落没有被禁止或删除。我选择清理数据服务器端

CKEDITOR.replace( 'id_text', {
    allowedContent: 'table(table); table(table-striped); thead tbody tfoot tr td th;',
    toolbar: [
        ['Source'], 
        ['Format'], 
        ['Table']
    ]
});
CKEDITOR.on('instanceReady', function(ev) {
   ev.editor.on('paste', function(evt) {
   evt.data.dataValue = evt.data.dataValue.replace( /Foo/g, 'Bar' );
   }, 9);
});
var $ = django.jQuery;

CKEDITOR.on("instanceReady", function( ev ) {
    ev.editor.on("paste", function( evt ) {
        var data = $.parseHTML(evt.data.dataValue);
        $( "th p, td p", data).each( function() {
            $( this ).replaceWith(  $( this ).contents() );
            });
        evt.data.dataValue = $('<div>').append(data).html();
        }, 9);
    });