我有一个 web 应用程序,它有一个 index.html,它通过 ajax 加载数据以显示不同的页面。
在那些不同的页面上,我想data-watch="true"
在一些需要观察变化的元素上放置属性(包括它自己及其子元素)。例如:
<ul data-watch="true">
<li>this</li>
<li>is</li>
<li>a</li>
<li>test</li>
</ul>
如果ul
自身发生变化,或者其子项ul
被添加/更改/删除,我需要执行一个显示已更改内容的函数。这ul
是一个例子。这也可能是一个包含大量子元素的 div(还有子元素中的子元素等)。
经过一些研究,我发现使用 Mutation Observer 是最好的方法。但是,我还没有完全让它与突变观察者一起工作。然后我找到了一个名为Mutation Summary的库,声称它可以做我想做的事。我只是无法让它以我想要的方式工作。
现在我有这个:
var observer = new MutationSummary({
callback: handleChanges,
queries: [{
attribute: 'data-watch',
}]
});
function handleChanges(summaries){
console.log(summaries);
}
但是,当通过 ajax 加载handleChanges
时,不会触发此代码。ul
但是,当我将属性添加到 eachli
时,它确实有效。但我不想在需要检查的每个元素上定义属性。只需将其放在跟踪其所有子元素的父元素上即可。至少对我来说,这似乎是最合乎逻辑的......
如果你有一个没有MutationSummary库的解决方案,那完全没问题。只要data-watch="true"
触发具有属性(及其子元素)的元素的所有更改(添加、更改或删除)。
你能帮我解决这个问题吗?