3

我有一种情况,我正在克隆一个包含 CKEditor 实例的元素。克隆后,我更改了所有 id 以确保在同一页面中没有两个具有相同 id 的元素。我无法访问 CKEditor 的克隆版本。事实上,如果我通过元素 id 访问它,我会得到原始的(而不是具有新 id 的克隆)。我可以毫无问题地访问被替换的文本区域,但不能访问随之而来的 CKEditor.editor 对象。是否可以通过使用被替换的元素(而不是它的 id)来访问这个对象?

注意请告诉我我可以在此处添加什么以使问题更清楚...

跟进 我发现我正在以错误的方式思考这个问题。当我克隆包含 CKEditor 的元素时,我有该元素的副本,但 CKEDITOR 对象不知道它。我最终做的只是删除与克隆编辑器关联的 html 并CKEDITOR.replace再次调用以替换克隆的 textarea。我希望这是可以理解的,我没有太多时间写。如果事情不清楚,请发表评论,我会尽快澄清。

4

2 回答 2

2

如果您使用的是 jQuery 适配器,则可以使用以下命令获取 CKEDITOR 对象...

$(element).ckeditorGet();
于 2016-04-28T09:58:16.060 回答
1

我不是 100% 知道问题是什么,但如果你有一个 id 为“content”的 textarea 并用编辑器替换它,那么你可以从 CKEDITOR.instances 访问该实例,如下所示:

CKEDITOR.instances.content        OR 
CKEDITOR.instances[content]       OR 
CKEDITOR.instances["content"]

现在,当您将克隆文本区域的 id 更改为“content2”并且克隆编辑器实例不在 CKEDITOR.instances 中时,您需要在 id 更新后替换克隆。

CKEDITOR.replace('content2');

所以编辑器会有多个实例“content”和“content2”。您可以遍历实例并验证它们并使用您需要的实例。

for(x in CKEDITOR.instances){
var instance = CKEDITOR.instances[x];
// do something with the instance
}
于 2013-03-28T18:15:04.613 回答