JSFiddle - React, Tailwind, and code Playground
HTML
<input type="checkbox" id="test" />
JavaScript
var AttributeObserver = function(element, callback, attribute){
var MO = (window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver);
if (MO) {
var observer = new MO(callback);
observer.observe(element, { attributes: true, attributeFilter: [attribute] });
} else {
if (!AttributeObserver.__timer) {
AttributeObserver.__observed = []
AttributeObserver.__timer = setInterval(function(){
for (var i = 0; i < AttributeObserver.__observed.length; i++) {
var o = AttributeObserver.__observed[i];
if (o.element.hasAttribute(o.attribute) !== o.flag) {
callback()
}
o.flag = o.element.hasAttribute(o.attribute)
}
}, 500)
AttributeObserver.__observed.push({
element: element,
attribute: attribute,
flag: element.hasAttribute(attribute)
})
}
}
}
new AttributeObserver(document.getElementById("test"), function(){alert(1)}, "disabled");
document.getElementById("test").disabled = true;