javascript - 如何在 contenteditable 中删除 HTML 元素时触发事件

标签 javascript html events

我有一个内容可编辑的 div,其中包含一些 html 元素。例如,假设我有:

<div contenteditable="true" id="myTextArea">
   Some content, <div id="div1">content in div</div>, 
   and more <span id="span1">content</span></div>

当用户在 myTextArea 中编辑文本并删除一些 html 元素(通过粘贴新内容或只是退格文本)时,我希望每个 html 元素触发一个事件并告诉我它已被删除。关于如何做到这一点的任何想法?

最佳答案

你可以使用 MutationObserver为了达成这个。要跟踪从 contenteditable 元素中删除的任何类型的节点,请观察以下示例

<div id="myTextArea" contenteditable="true">
    <input value="input" />
    <span contenteditable="false">span</span>
</div>

var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {

        //console.log($(mutation.removedNodes)); // <<-- includes text nodes as well

        $(mutation.removedNodes).each(function(value, index) {
            if(this.nodeType === 1) {
                console.log(this) // your removed html node
            }
        });
    });
});

var config = { attributes: true, childList: true, characterData: true };

observer.observe($('#myTextArea')[0], config);

JSFiddle Link

关于javascript - 如何在 contenteditable 中删除 HTML 元素时触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13041726/

相关文章:

javascript - Nuxtjs错误渲染函数或模板未在组件中定义: carousel

html - 表单元素底部的神秘空白

javascript - 如何使用 JavaScript 拉伸(stretch)图像以填充 div

html - 将 Flex/CSS 与 wkhtmltopdf 一起使用

java - 为什么从不更改接收更改事件的通知程序

javascript - 未捕获的语法错误 : Unexpected token < occurring when deploying

javascript - Dojo DOH 单元测试

javascript - 如何使用 javascript 传递用户名和密码调用 WCF 服务

events - 未收到大文件的 AWS S3 PUT 事件的通知

javascript - 单击 ID 时如何从 Jquery 内部调用 Javascript 函数