首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何卸载/删除bootstrap-markdown编辑器?

如何卸载/删除bootstrap-markdown编辑器?
EN

Stack Overflow用户
提问于 2017-02-27 06:15:50
回答 1查看 357关注 0票数 0

使用https://github.com/toopay/bootstrap-markdown/时,此标记编辑器没有任何方法来卸载/删除编辑器。在某些情况下,需要在加载编辑器后将其移除,例如切换编辑器。

编辑器被加载到文本区域,如下所示:

代码语言:javascript
复制
$("#some-textarea").markdown({autofocus:false,savable:false})

我不知道DOM在哪里访问编辑器元素,也不知道如何操作它的对象。

附言:

这就是我如何解决这个问题的,这个编辑器没有任何类型的销毁/卸载功能,在加载它时,通过向附加TextArea的父对象添加一些元素来更改DOM。有了替换文本区域的想法(特别感谢https://stackoverflow.com/users/1326271/adam-wolski ),我首先想到了复制父节点,并在切换时用加载的编辑器替换复制的节点,但在javascript中通过值(而不是引用)复制是完全失败的,以下是我尝试过的解决方案:

代码语言:javascript
复制
$('#editorPlace').clone(); //copies the node tree be reference
$.extend(true, {}, $('#editorPlace')); //still copies by reference

因此,我被迫重新创建所需的元素并删除旧元素,另一个问题是我无法控制节点树,表单是自动生成的。最后,解决方案是创建一个容器元素,并在其中添加一个新创建的文本区域。然后将容器附加到Textarea必须放置的位置旁边的同级。代码如下:

代码语言:javascript
复制
  $('#messageContainer').remove();
  $('#someTextarea').remove();//for the first call
  var div = document.createElement('div');
  div.setAttribute('id', 'messageContainer');
  var ta = document.createElement('textarea');
  ta.setAttribute('id', 'messageArea');
  ta.setAttribute('class', 'form-control');
  ta.setAttribute('name', 'someTextarea');
  div.appendChild(ta);
  $("label[for='someTextarea']").after(div);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-27 07:03:12

如果插件本身不公开任何destroy方法,那么这个问题就没有通用的解决方案。尽管您可以:

a)找出插件对DOM元素做了什么,并反转它

b)从DOM中删除该节点并添加一个新节点。

在您的情况下,如果您想要切换编辑器,您可以使用选项b)。因为bootstrap-markdown使用一些自定义标记包装了textarea,所以您可能需要删除它的父级。像这样:

代码语言:javascript
复制
$("#some-textarea").parents('.md-editor').remove()

然后,创建一个新的textarea元素,附加新的编辑器,并将其附加到DOM所需的位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42474881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档