cjeditor实例在ajax + jquery之后已经存在

时间:2014-11-15 14:52:17

标签: jquery ajax ckeditor

我使用JQuery for CKeditor。 我有几个textarea。 在内容生成时,textarea的名称可能不同。

通过这个,我使用类而不是ID:

$('.ckedit').ckeditor();

AJAX内容重新加载后,我发现错误: *实例某事已存在*

我知道,我可以使用Ckeditor的destroy方法:

if (CKEDITOR.instances['textarea_name']) {
  CKEDITOR.instances['textarea_name'].destroy();
}

但是我不能这样做,因为textarea的名字/ id目前可能是几个。

我如何解决这个问题?谢谢,抱歉我的英文:)

3 个答案:

答案 0 :(得分:0)

当我有一个带有CkEditor的UpdatePanel时,我尝试使用此代码并为我工作:

ASPX:

<asp:UpdatePanel ID="up" runat="server">
    <ContentTemplate>
        <textarea></textarea>
        <asp:Label ID="lbl" runat="server" />
        <asp:Button ID="btnGo" runat="server" OnClick="btnGo_Click" />
    </ContentTemplate>
</asp:UpdatePanel>

使用Javascript:

$(document).ready(function () {
    ReplaceWithCkEditor();
});

function pageLoad() {
    ReplaceWithCkEditor();
}

function ReplaceWithCkEditor() {
    $('textarea').ckeditor();
}

Microsoft Ajax框架在UpdatePanel完成后运行pageLoad函数。然后我用CkEditor替换textarea。

答案 1 :(得分:0)

感谢所有人。 我解决了这个问题。

之前

$('.ckedit').ckeditor();

需要插入:

jQuery.each(CKEDITOR.instances, function(){
     eval("CKEDITOR.instances."+this.name+".destroy(true)");
});

答案 2 :(得分:0)

您在textarea中添加了类wysiwyg并调用此函数。当您转换新textarea时,请使用此函数将新闻元素textarea转换为此类。

CKEDITOR.basePath += 'ckeditor/';
CKEDITOR.config.contentsCss = '/ckeditor/contents.css' ;      
function addWysiwyg()
{
    var eldata = $(document).find('.wysiwyg');

    console.log(eldata);
    var config = {};
    $(eldata).each(function(){
       CKEDITOR.replace(this, config);
       $(this).removeClass('wysiwyg');
    });
}