CKEditor的实例已存在。

9
我在 Stack Overflow 上找到了一些类似的帖子,但没有一个答案是有效的。我的页面上有几个选项卡,根据他们点击的 li 标签,它们将看到特定的标签页。在其中一个标签页中,有一个 CKEditor,在单击 li 标签时初始化。当用户从该特定标签切换到另一个标签,然后返回时,会出现以下错误:

Uncaught The editor instance "employDesc" is already attached to the provided element.

这是 JS 代码:
    $('.addVacancy').click( function() {
        if(CKEDITOR.instances.employDesc)  {
            alert('instance exists');
            var editor = CKEDITOR.instances[employDesc];
            if (editor) { 
                editor.destroy(true); 
            } 
            alert('distroyed');
        }   
        CKEDITOR.replace('employDesc');
    });

两个警报都出现了,但当错误出现在控制台中时,它就会崩溃。有人可以帮忙吗?

谢谢


为什么你想在li的点击事件上绑定CKEDITOR?为什么不在文档加载时绑定它? - astroanu
我尝试过了,但当我点击选项卡时它没有起作用。我想也许它们是动态加载的。 - MarkP
你能否制作一个可工作的 fiddle 示例? - astroanu
4个回答

20
你试图使用一个名为employDesc的变量,你应该使用CKEDITOR.instances ["employDesc"]; 或者只需
$('.addVacancy').click( function() {
    var editor = CKEDITOR.instances.employDesc;
    if (editor) {
        alert('instance exists');
        editor.destroy(true); 
        alert('destroyed');
    }   
    CKEDITOR.replace('employDesc');
});

你试图做的事情还是一样的。


3
if (CKEDITOR.instances['tresc']) {
    CKEDITOR.remove(CKEDITOR.instances['tresc']);
} else{
    CKEDITOR.replace( 'tresc');
}

3

我正在使用类似以下代码的方法来检查编辑器是否未定义,如果未定义则创建一个新实例。我认为这比我尝试过的其他方法更好。

var editor = CKEDITOR.instances.['employDesc'];
    if (!editor){
        CKEDITOR.replace('employDesc');
    }

0

我在网上找不到任何解决方案,但这个方法对我有效:

var notes = 'div-name';
$('#'+notes).html('');
CKEDITOR.appendTo( notes );

我使用了CKEDITOR.appendTo而不是CKEDITOR.replace。

希望这能为一些可怜的灵魂节省宝贵的时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接