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;