jQuery、Ajax 和 CKEditor - 如何“解除绑定”CKEditor实例

3

嘿,我正在使用jquery、ajax和CKEditor:

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

第一次通过ajax加载页面时,ckeditor()能够顺利启动。但第二次失败了。通常绑定时会做如下操作:
.unbind('click').bind('click',function{...})

我要怎么做才能取消绑定ckeditor()

4个回答

5
我找到的最好的是...
if (CKEDITOR.instances['ckeditor']) {
    CKEDITOR.remove(CKEDITOR.instances['ckeditor']);
}

3

您可以通过以下方式获取CKEDITOR对象引用:

var editor = $('.ckeditor').ckeditorGet();

然后你可以像这样销毁它:

CKEDITOR.remove(editor);

如果当前不存在实例,则会导致错误。我可以在调用ckeditorGet()之前检查有效实例吗? - emachine
最简单的方法是将此调用包装在try-catch块中。 - Variant
但是,如果您想深入了解它,可以查看CKEDITOR.instances集合,看看您的编辑器是否在其中定义。 - Variant
坦白地说,我都不喜欢... 最近试图摆脱富文本编辑器,转向替代标记语言解决方案(如wikiformat、markdown等),仍在寻找完美的语法和客户端/服务器工具。 - Variant
顺便提一句:只是为了我的知识和这个页面的完整性。我的解决方案对您没有起作用还是有其他问题? - Variant
显示剩余2条评论

2

我用了较长的方法:). 您可以按照以下方式计算CK实例的数量:

function countProps(obj) {
    var l = 0;
    for (p in obj) l++;
    return l;
}
if ( countProps(CKEDITOR.instances) ) { 
// to assure you have at least one instance of ckeditor
// you may want to use more complicated checks - in my case I have only one editor 
// instance per page
    editor = $('youreditor').ckeditorGet();
    CKEDITOR.remove(editor); 
}

0

简单方法 按名称获取实例,如果存在则删除:

  var editor = CKEDITOR.instances['name'];
  if (editor) {
      editor.destroy(true);
  }

或者

  var editor = CKEDITOR.instances['name'];
  if (editor) {
      CKEDITOR.remove(editor);
  }

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