使用 jQuery 隐藏 TinyMCE

发布于 2024-11-09 18:43:07 字数 343 浏览 4 评论 0原文

我在 #container 中有一个 TinyMCE 文本区域

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

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

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

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

我应该做些什么不同的事情?

I have a TinyMCE textarea inside of #container

When I use $('#container').hide() and then $('#container').show(), tinyMCE throws:

Cannot read property 'selection' of undefined

I'm using the jquery plugin, so this is how I set it up:

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

What should I be doing differently?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

风追烟花雨 2024-11-16 18:43:07

此处使用的正确命令是

// 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();

The correct command to use here is

// 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();  

to make it visible again use

tinymce.get(editor_id).show();
不交电费瞎发啥光 2024-11-16 18:43:07

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

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

编辑/更新:

您还可以尝试在 hide() 容器之前从文本区域中删除 TinyMCE,然后在 show() 后将其带回来。但你需要给你的文本区域一个#ID:

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

Instead of hiding it, try sending it off screen - something like:

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

EDIT/UPDATE:

You could also try removing TinyMCE from the textarea before you hide() the container, and then bring it back after you show(). But you'll need to give your textarea an #ID:

//To Enable
tinyMCE.execCommand('mceAddControl', false, $("#container textarea").attr('id'));
//To Disable
tinyMCE.execCommand('mceRemoveControl', false, $("#container textarea").attr('id'));
世态炎凉 2024-11-16 18:43:07

显然这是动画。如果我显示()/隐藏()我很好,但是当我尝试在tinyMCE中制作动画时,在完成动画后出现问题,一旦文本区域的显示不是无,可能会尝试设置选项。

Apparently it was the animation. if I show()/hide() I'm fine, but when I try to animate in tinyMCE has an issue after I finish animating, possibly trying to set options once the textarea's display isn't none.

淡淡の花香 2024-11-16 18:43:07

这个问题是关于隐藏和显示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]

这是当我在文本区域上有两个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-1 并且您想要删除和重新初始化它,然后您可以通过以下方式清空tinymce.EditorManager.editors:

tinymce.EditorManager.editors = [];

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

希望有帮助

This question is about hiding and showing tinymce editor but if anyone came here about removing and re-adding tinymce editor without error then my solution can work for them.

To remove existing tinymce editor and add new needs clearance of tinymce.EditorManager.editors array. This solution works in both cases : 1. If you have only one editor and you want to remove and add it again. 2. If you have multiple editors and you want to remove some special editor and add it again.

console.log(tinymce.EditorManager.editors);

This will give you a view of the array and exact index of you desired editor which you want to remove. For example one sample output of above console can be:

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

This is the output of the console when i have two tinymce editors on textareas : #textarea-1 and #textarea-2 Lets suppose I want to delete #textarea-2 and re-add it then it can be done as follows:

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

Then you can add it again simply using init:

tinymce.init({
    selector:'#ts-textarea-2'
});

If you have only one textarea associated with tinymce editor lets say : #textarea-1 and you want to remove and re-initialize it then you can just empty tinymce.EditorManager.editors by :

tinymce.EditorManager.editors = [];

And then you can add using init command as explained above. Worked for me without any error.

I hope it helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文