Javascript 在元素附加到DOM之前初始化CKEDITOR

Javascript 在元素附加到DOM之前初始化CKEDITOR,javascript,jquery,html,dom,ckeditor,Javascript,Jquery,Html,Dom,Ckeditor,我要做的是在textarea连接到DOM之前完全初始化textarea上的CKEDITOR 我有一个功能,将克隆一个html表单,附加事件和初始化表单输入 这样我就可以通过一个函数调用得到一个功能完整的表单。使整个系统易于实现 HTML 因为这个设计。。。我可以在许多地方使用该表单,例如: var popup_content = $('<div/>') .append('<h1>Add a Reminder</h1&g

我要做的是在textarea连接到DOM之前完全初始化textarea上的CKEDITOR

我有一个功能,将克隆一个html表单,附加事件和初始化表单输入

这样我就可以通过一个函数调用得到一个功能完整的表单。使整个系统易于实现

HTML 因为这个设计。。。我可以在许多地方使用该表单,例如:

var popup_content = $('<div/>')
                        .append('<h1>Add a Reminder</h1>')
                        .append(getReminderForm());
$.fancybox(popup_content);
将不起作用,因为CKEDITOR在DOM中搜索元素。但是,我的元素尚未连接到DOM

有人能想出一个解决办法吗?因为如果我不能,那么我的整个系统都会有这样的代码:

// attach form to container
$('#some-container').append(getReminderForm());

// Initialize AFTER form has been attached
CKEDITOR.replace('note');
当我可以:

$('#some-container').append(getReminderForm());

必须使用现有DOM元素(
CKEditor.replace
)或现有父元素(
CKEditor.appendTo
)创建CKEditor

如果我是你,我只需要创建一个函数:

function appendReminderForm( where ) {
    // Clone existing form...
    // ...

    // Append cloned form to DOM.
    where.append( clonedForm );

    // Replace textarea to create the editor.
    CKEDITOR.replace( clonedTextarea );
}

请注意,调用
CKEDITOR.replace
时,传递给函数的参数必须是唯一的标识符,因此
CKEDITOR.replace('Note')
没有多大意义,因为有两个相同的
名称的元素(克隆)。最好检索本机DOM元素(
textarea
,克隆形式),并将其传递给
CKEDITOR.replace

,或者,您可以将其抽象到函数后面<代码>$.fn.placeEmendmentPerform=function(){this.append(getEmendmentPerform());CKEDITOR.replace('note');}
然后只需执行
$(“#某个容器”)。placeemendmenterform()
我可以,谢谢你的评论。我可能最终会使用它,但我仍然感兴趣的是是否可以在附加元素之前绑定CKEDITOR。理想情况下,我希望将ckeditor绑定到getrementperform函数中,因为这是绑定其余内容的地方,而且它有一定的意义:)我同意,这就是为什么我将其作为注释而不是答案发布的原因。这是一个解决办法,但不是最好的办法。我有些东西你可以试试。使用基本上,您将选择h1并将其用作
元素
。。。我认为它与replace是相同的,期望它将编辑器放在您选择的元素中。它仍然仅限于附加的DOM元素:(
// attach form to container
$('#some-container').append(getReminderForm());

// Initialize AFTER form has been attached
CKEDITOR.replace('note');
$('#some-container').append(getReminderForm());
function appendReminderForm( where ) {
    // Clone existing form...
    // ...

    // Append cloned form to DOM.
    where.append( clonedForm );

    // Replace textarea to create the editor.
    CKEDITOR.replace( clonedTextarea );
}