使用jQuery、隐藏/非隐藏元素等动态管理TinyMCE实例

使用jQuery、隐藏/非隐藏元素等动态管理TinyMCE实例,tinymce,Tinymce,加载网页时,我按类将所有TEXTAREA元素分配给TinyMCE,如下所示: if ($('.assigntinymce').length){ tinyMCE.init({ plugins: 'lists,link,code', selector:'.assigntinymce', branding:false, menubar:false, statusbar:false, toolbar:

加载网页时,我按类将所有TEXTAREA元素分配给TinyMCE,如下所示:

if ($('.assigntinymce').length){
    tinyMCE.init({
        plugins: 'lists,link,code',
        selector:'.assigntinymce',
        branding:false,
        menubar:false,
        statusbar:false,
        toolbar:'bold italic underline | fontsizeselect | forecolor | bullist numlist | alignleft aligncenter alignright | link | code | undo redo',
        content_css:'css/main.css'
    });
}
但是,由于用户交互,我可能希望隐藏其中一些元素或显示隐藏的TEXTAREA元素

如果我试图隐藏一个已经分配了TinyMCE的TEXTAREA元素,TinyMCE元素将保留。从该元素中完全删除TinyMCE的正确步骤是什么?我知道有一个删除选项,但这似乎不适合我。我还必须删除一个ID或类似的东西


相反,如果我没有分配一个隐藏的TEXTAREA元素TinyMCE,并且运行上面的代码,那么该元素不会转换为TinyMCE。TinyMCE不会分配给隐藏的文本区域是否正确?如果我不隐藏TEXTAREA元素,我应该能够运行相同的脚本并将TinyMCE分配给该元素,然后?

在没有看到运行的代码的情况下,很难说清楚为什么会出现这样的问题,但从根本上说,使用remove和init删除TinyMCE并将TinyMCE添加到元素是正确的API调用

如何选择显示和隐藏元素将影响此问题。一些隐藏元素的方法只是通过CSS使其不可见,而另一些方法导致元素从DOM中删除。你这样做的方式会对事情产生巨大的影响

如果隐藏元素的方式导致它从DOM中删除,并在取消隐藏时重新添加,则需要在将其从DOM中删除之前对该编辑器实例调用remove。然后取消隐藏元素时,需要在元素重新添加到DOM后对其调用init

如果只是在视觉上隐藏了一些东西,但仍然是DOM的一部分,则不需要使用remove,因为元素始终在那里,TinyMCE可以保持与元素的连接

至于你对在隐藏元素上调用init的评论。。。如上所述,这取决于它是如何被隐藏的。如果隐藏时它不是DOM的一部分,则不能对不在DOM中的元素调用init

编辑: 根据您的评论,我假设您指的是jQuery函数?如果是这样,请快速查看jQuery文档中的隐藏状态,如下所示:

匹配的元素将立即隐藏,没有动画。 这大致相当于调用.css display,none


…我怀疑这意味着它确实已从DOM中删除。如果不使用jQuery,而只是使用CSS设置visibility=hidden,那么表单的行为是否符合预期?

我不是在DOM中添加或删除,我只是在我的TEXTAREA元素上使用show和hide。同时显示和隐藏TinyMCE编辑器是一种更好的策略吗?目前,如果我隐藏了一个TEXTAREA元素,TinyMCE编辑器将保持不变,我希望它至少在TEXTAREA被隐藏的时候消失。我想我现在可以工作了。我只是显示和隐藏包含TinyMCE编辑器的DIV,而不是TEXTAREA元素,因为TinyMCE无论如何都会隐藏它们,所以这些元素有些不相关。至少我希望这是一个好的策略,它现在正在发挥作用。