使用jQuery隐藏TinyMCE

时间:2011-05-24 18:03:04

标签: javascript jquery jquery-plugins tinymce wysiwyg

我在#container

中有一个TinyMCE textarea

当我使用$('#container').hide()然后使用$('#container').show()时,tinyMCE会抛出:

  

无法读取未定义的属性“选择”

我正在使用jquery插件,所以这就是我设置的方式:

$('#container textarea').tinymce({ /* options */ });

我应该做些什么?

4 个答案:

答案 0 :(得分:10)

这里使用的正确命令是

// editor_id is the id of your textarea and 
// tinymce will use this id to uniquely identify this editor instance
editor_id = $("#container textarea").attr('id');
tinymce.get(editor_id).hide();  

再次使用

tinymce.get(editor_id).show();

答案 1 :(得分:1)

这个问题是关于隐藏和显示tinymce编辑器,但如果有人来到这里关于删除和重新添加tinymce编辑器没有错误,那么我的解决方案可以为他们工作。

删除现有的tinymce编辑器并添加tinymce.EditorManager.editors数组的新需求清除。此解决方案适用于以下两种情况:1。如果您只有一个编辑器,并且想要删除并再次添加它。 2.如果您有多个编辑器,并且想要删除某些特殊编辑器并再次添加它。

console.log(tinymce.EditorManager.editors);

这将为您提供要删除的所需编辑器的数组和精确索引的视图。例如,上述控制台的一个示例输出可以是:

Array[2]
0:B
1:B
length:2
textarea-1:B
textarea-2:B
_proto_Array[0]

当我在textareas上有两个tinymce编辑器时,这是控制台的输出:#textarea-1和#textarea-2假设我想删除#textarea-2并重新添加它然后可以按如下方式完成:

tinymce.EditorManager.editors.splice(1, 1);//removing second element in array.
delete tinymce.EditorManager.editors['textarea-2'];//deleting respective textarea id from array

然后你可以使用init:

再次添加它
tinymce.init({
    selector:'#ts-textarea-2'
});

如果你只有一个与tinymce编辑器关联的textarea,请说:#textarea-1,你想删除并重新初始化它然后你可以通过以下方式清空tinymce.EditorManager.editors:

tinymce.EditorManager.editors = [];

然后您可以使用init命令添加,如上所述。为我工作没有任何错误。

我希望它有所帮助

答案 2 :(得分:0)

不要隐藏它,而是尝试将其发送到屏幕外 - 例如:

$('#container').css('left', '-1000px');

EDIT / UPDATE:

你也可以在隐藏()容器之前尝试从textarea中删除TinyMCE,然后在show()之后将其恢复。但是你需要给你的textarea一个#ID:

//To Enable
tinyMCE.execCommand('mceAddControl', false, $("#container textarea").attr('id'));
//To Disable
tinyMCE.execCommand('mceRemoveControl', false, $("#container textarea").attr('id'));

答案 3 :(得分:0)

显然是动画片。如果我显示()/ hide()我很好,但是当我尝试在tinyMCE中制作动画时,我完成动画后会出现问题,一旦textarea的显示不是空,可能会尝试设置选项。