我有一個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