与 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/