为什么DOMSubtreeModified事件deprecated以及我们应该使用什么?
答案 0 :(得分:48)
如果您scroll down a bit,您会看到:
警告! DOM级别2中引入了
MutationEvent
接口 事件,但尚未完全和互操作地实施 跨用户代理。此外,还有批评说 界面,如设计,介绍了性能和实现 挑战。目前正在制定新的规范 解决突变事件解决的用例,但更多 高效的方式。因此,该说明书描述了突变事件 作为遗留行为的参考和完整性,但弃用了 使用MutationEvent
界面和MutationNameEvent
接口
替换API为mutation observers,完全指定in the DOM Living Standard,取代所有DOM级别X愚蠢。
答案 1 :(得分:20)
我认为替换将是变异观察者:https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
var whatToObserve = {childList: true, attributes: true, subtree: true, attributeOldValue: true, attributeFilter: ['class', 'style']};
var mutationObserver = new MutationObserver(function(mutationRecords) {
$.each(mutationRecords, function(index, mutationRecord) {
if (mutationRecord.type === 'childList') {
if (mutationRecord.addedNodes.length > 0) {
//DOM node added, do something
}
else if (mutationRecord.removedNodes.length > 0) {
//DOM node removed, do something
}
}
else if (mutationRecord.type === 'attributes') {
if (mutationRecord.attributeName === 'class') {
//class changed, do something
}
}
});
});
mutationObserver.observe(document.body, whatToObserve);