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

标签 javascript jquery

https://github.com/toopay/bootstrap-markdown/ 合作此 Markdown 编辑器没有任何卸载/删除编辑器的方法。在某些情况下,需要在加载编辑器后将其删除,例如切换编辑器。

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

$("#some-textarea").markdown({autofocus:false,savable:false})

我不知道 DOM 中的何处访问编辑器元素或如何操作其对象。

附注:

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

$('#editorPlace').clone(); //copies the node tree be reference
$.extend(true, {}, $('#editorPlace')); //still copies by reference

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

  $('#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);

最佳答案

如果插件本身不公开任何 destroy 方法,则此问题没有通用解决方案。虽然你可以:

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

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

就您而言,如果您想切换编辑器,您可以选择选项 b)。由于 bootstrap-markdown 使用一些自定义标记包装文本区域,因此您可能需要删除其父级。喜欢:

$("#some-textarea").parents('.md-editor').remove()

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

关于javascript - 如何卸载/删除 bootstrap-markdown 编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42474881/

相关文章:

javascript - 如何将模态滑到一边 - 显示其他模态(向导之类的...)

javascript - 如何用状态码 500 响应 ajax jsonp 请求

javascript - 如何使用 jQuery 选择文本

javascript - 访问同一页面的php中的Js变量,只是URL中的div标签不同

javascript - 更改命令 text-align :center is relative to in css

javascript - 使用 php 而不是 javascript 重定向页面

javascript - 使用 jQuery 在太长的 header 中添加中断

javascript - redux-form 如何加载数据进行编辑

java - Android 中 Java 的自动点击 html 按钮

jquery - 单击父项会执行操作,但不会对子项执行操作