2017-01-03 112 views
1

我有一个基本的jQuery脚本,检测元素的删除和计数其子元素。但子元素数不会改变,虽然元素被删除。jQuery DOM元素被删除,但子元素数仍然相同

这里是我的HTML脚本

<div> 
    <p>Test 1</p> 
    <p>Test 2</p> 
    <p id="p3">Test 3</p> 
</div> 
<input type=submit value='Remove Test 3' id=submit-btn /> 

我的jQuery脚本

$('#submit-btn').click(function() 
    { 
     $('#p3').remove(); 
    }); 

    $("div").on('DOMNodeRemoved', function() { 
     //confirm the element removal 
     console.log("removed"); 

     //get child element count 
     console.log(this.childElementCount); 
    }); 

请参阅:https://jsfiddle.net/luan123z/zjaxgvad/4/

回答

1

我会听的DOMSubtreeModified事件来代替。用DOMNodeRemoved看来你需要有一些类型的延迟才能报告正确的计数。这里有一个更新的小提琴:https://jsfiddle.net/zjaxgvad/5/

+1

为了补充说明,这是因为'DOMNodeRemoved'是“在节点从树上移除之前调度的”。来源:https://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.html –

+0

哇,非常感谢。它真的起作用了! –