Javascript 用jQuery隐藏TinyMCE
我在Javascript 用jQuery隐藏TinyMCE,javascript,jquery,jquery-plugins,tinymce,wysiwyg,Javascript,Jquery,Jquery Plugins,Tinymce,Wysiwyg,我在#容器内有一个TinyMCE文本区域 当我使用$('#container').hide()然后使用$('#container').show()时,tinyMCE抛出: 无法读取未定义的属性“selection” 我正在使用jquery插件,所以我是这样设置的: $('#container textarea').tinymce({ /* options */ }); 我应该怎么做呢?与其隐藏它,不如尝试将它从屏幕上发送出去,比如: $('#container').css('left', '-
#容器内有一个TinyMCE文本区域
当我使用$('#container').hide()
然后使用$('#container').show()
时,tinyMCE抛出:
无法读取未定义的属性“selection”
我正在使用jquery插件,所以我是这样设置的:
$('#container textarea').tinymce({ /* options */ });
我应该怎么做呢?与其隐藏它,不如尝试将它从屏幕上发送出去,比如:
$('#container').css('left', '-1000px');
编辑/更新:
您还可以在隐藏()容器之前尝试从文本区域中删除TinyMCE,然后在显示()后将其带回来。但你需要给你的文本区一个#ID:
这里使用的正确命令是
// 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();
显然是动画。如果我显示()/hide(),我很好,但是当我尝试在tinyMCE中设置动画时,在我完成动画设置后出现问题,一旦textarea的显示不为空,可能会尝试设置选项。这个问题是关于隐藏和显示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]
这是当我在textarea上有两个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.editor:
tinymce.EditorManager.editors = [];
然后可以使用上面解释的init命令添加。为我工作没有任何错误
我希望这能有所帮助@chris:这对IE有用吗?因为如果我没记错的话,它不喜欢负px'sAlso:我在使用jQuery的动画;所以最好还是使用这些工具,而不是仅仅使用它。有没有一种方法可以通过jQuery插件做到这一点?(例如
$('my:textarea').tinymce('disable');
)。我尝试过禁用,但仍然得到异常。我真的更愿意通过jQuery插件处理这个问题:$(“#container textarea”).tinymce().execCommand('mceRemoveControl',false,$(“#container textarea”).attr('id')
有没有办法通过jQuery插件做到这一点?当我尝试使用tinymce.get('textareaidwithoutboundsign').hide()隐藏时,我仍然无法读取未定义的的属性“selection”(在刷新页面之前,有无数次),如果你的页面上只有一个editorinstance,你可以使用tinymce.editors[0].hide();也发生了什么?相同的处理(无法读取未定义的
的属性“selection”),尽管当我尝试tinymce.editors[0].show()时代码>它,我得到未捕获类型错误:无法读取未定义的属性“createRange”
。另外,如果可能的话,我更愿意使用jQuery接口来澄清:我使用的是tinymce.editors[0].hide()
然后$(“#容器中有tinyMCE”).hide()
为了在隐藏tinyMCE之后隐藏容器(其中包含其他内容),这只删除了tinyMCE编辑器实例,需要额外调用来隐藏textarea本身。再次使用相同的方法show()
it,不需要额外调用来显示textarea+1.这对我很管用
tinymce.EditorManager.editors = [];