我有一个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(也包括孩子等)。
经过一番研究,我发现使用突变观察者是最好的方法。然而,我并不完全同意突变观察者的工作。然后我发现了一个名为突变摘要的库,声称它可以做我想做的事。我无法以我想要的方式让它工作。
现在我有这样的:
var observer = new MutationSummary({
callback: handleChanges,
queries: [{
attribute: 'data-watch',
}]
});
function handleChanges(summaries){
console.log(summaries);
}
但有了这个代码handleChanges
当ul
通过AJAX加载不会被触发。
但是,当我将属性添加到每个li
,那么它确实有效。但我不想在每个需要检查的元素上定义属性。只需将它放在一个跟踪其所有子项的父元素上即可。这似乎是对我来说最逻辑的至少...
如果你有一个没有MutationSummary库的解决方案,那完全没问题。只要触发了具有data-watch="true"
属性(及其子项)的元素的所有更改(添加,更改或删除)。
你能帮我解决这个问题吗?
好想法!但是,如果在代码中的其他地方调用成功函数,是不是覆盖了成功函数? –
那么全球。ajaxSuccess()可以被覆盖,但我的理解是,您必须在进行调用时明确地执行上述操作,在这种情况下,您的函数就是覆盖函数。 – Parker