【问题标题】:CKEDITOR destroyCKEDITOR 销毁
【发布时间】:2015-04-14 19:46:00
【问题描述】:

我想删除所有 div、类、属性以及 CKEDITOR 添加到 DOM 的几乎所有内容。例如调用 jquery tabs("destroy");将删除由 jQuery 选项卡添加的所有添加的 div。我该如何为 CKEDITOR 做同样的事情,似乎找不到解决方案。

$("body").find("[edit]").each(function() {
    $(this).ckeditor();
});

我就是这么称呼ckeditor的。我在文档中找到了这个,但不知道如何使用它。 http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#destroy

【问题讨论】:

标签: javascript ckeditor destroy


【解决方案1】:

如果您可以为要删除的内容构建选择器,则可以使用 jQuery 的 remove 函数。例如,如果所有 CKEditor 元素的类中都包含“ckeditor”,则可以使用

$("[class*='ckeditor']").remove()

从 DOM 中删除它们。

https://api.jquery.com/remove/

【讨论】:

  • 这不起作用,因为 ckeditor 将类和属性添加到插件未添加的元素。
【解决方案2】:

根据http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.html#.remove,你应该使用destroy()函数而不是remove()

Removes an editor instance from the global CKEDITOR object. 
This function is available for internal use only. External code
must use CKEDITOR.editor.prototype.destroy to avoid memory leaks.

所以代码是 $([class*='ckeditor']).destroy(true)

【讨论】:

    【解决方案3】:

    你需要把事情分开。您不能使用 jQuery 删除 CKEditor 实例,也不能使用 CKEditor 删除 jQuery 对话框或任何其他 jQuery 小部件。

    jQuery 的 .remove() 是从 DOM 中删除元素,这是正确的,但不会正确销毁任何添加的事件等。

    因此,您可以使用 CKEditor 的 .destroy() 从 DOM 中删除任何实例,然后您可以在使用 jQuery 的销毁方法之后删除任何 jQuery 容器(选项卡、对话框等)。对于一个 jQuery-UI 对话框,它是:$("#myDiv").dialog("destroy")。

    // So to create you use var editor = CKEditor.replace('id-of-your-input'); // and to destroy you use: editor.destroy();

    就这么简单。

    我在这里创建了一个 plunk,我在 jQuery 对话框中按步骤创建和销毁 CKEditor:http://plnkr.co/edit/z1YJa4?p=preview

    官方文档在这里: http://sdk.ckeditor.com/samples/saveajax.html

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-06
      • 2015-12-18
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多