Потребуется и
MutationObserver, и
Mutation Events для
IE10 и ниже.
В итоге получается
вот так, включая полифилл
var observeObject = function () {
var _class = {
init: function (selector, callback) {
var element = document.querySelector(selector);
try {
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
callback(mutation.target, mutation.attributeName, mutation.oldValue);
});
});
observer.observe(element, {
attributes: true,
subtree: true,
attributeOldValue: true
});
} catch (z) {
element.addEventListener('DOMAttrModified', function (e) {
callback(e.target, e.attrName, e.prevValue);
}, false);
}
}
};
return _class;
}();
/* А тут инициализируем отслеживание в элементе, передавая селектор */
$(function () {
observeObject.init('селектор"]', function (target, name, oldValue) {
/* ссылка на Node, имя атрибута, предыдущее значение */
console.log(target, name, oldValue);
});
});