如何在模糊时销毁实例
CKEditor: HowTo destroy instance on blur?
我有一个单一的html页面上有多个div
元素。每次用户点击一个div
,它被替换为一个CKEditor
在飞行:
$('.editable').click(function() {
editor = CKEDITOR.replace(this);
});
现在,如果CKEditor实例失去焦点(模糊事件),我需要通过ajax(如果发生变化)将内容发布到单独的脚本并销毁此实例:
$('.editable').click(function() {
editor = CKEDITOR.replace(this);
editor.on('blur', function(e)
{
if (e.editor.checkDirty())
// get data with e.editor.getData() and do some ajax magic
e.editor.destroy();
});
});
但是这个例子不会工作,因为,我不知道为什么,destory()
将在checkDirty()
之前被调用。我怎样才能使它工作?
如果将destroy()
放在if()
语句中呢?如果没有任何变化,可以使用else子句调用destroy。如果发生了更改,可以在数据传输完成后在If子句中调用destroy()
。
$('.editable').click(function() {
editor = CKEDITOR.replace(this);
editor.on('blur', function(e)
{
if (e.editor.checkDirty()) {
// get data with e.editor.getData() and do some ajax magic
if ( dataTransferComplete ) {
e.editor.destroy();
}
} else {
e.editor.destroy();
}
});
});
或者您可以在调用destroy()
之前检查变量。在数据传输完成后,在else子句中将该变量设置为true,这样destroy()
将不会被调用,直到您检查更改并传输任何更新的数据。
$('.editable').click(function() {
editor = CKEDITOR.replace(this);
editor.on('blur', function(e)
{
var okToDestroy = false;
if (e.editor.checkDirty()) {
// get data with e.editor.getData() and do some ajax magic
okToDestroy = true;
} else {
okToDestroy = true;
}
if (okToDestroy )
e.editor.destroy();
});
});
这是一个大纲,我还没有测试代码,但它显示了概念。
Be Well,
乔
相关文章:
- 模糊事件的Javascript测试
- ES6构造函数返回基类的实例
- KnockoutJS-组件-多个实例
- 为什么无法在TypeScript中导出类实例
- 将事件聚焦/模糊在可编辑内容的元素上
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- fluxxor向一个flux实例添加一组以上的操作
- 使用jQuery获取Dropzone实例/对象
- "实例范围”;TypeScript类的getter/setter
- 如何在速度模板中获取LiferayPortlet实例id
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- 实例创建(JS)
- 显示模块模式在Knockout中设置模型的新实例
- 如何获取单选按钮的多个实例的选定单选按钮值
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- 在哪里可以找到RXUI Javascript'时间飞逝'实例
- spine.js在启动时填充模型实例
- 不再需要时使用jQuery/kill实例
- 实例属性会模糊原型链吗
- 如何在模糊时销毁实例