Javascript 侦听元素禁用事件
有没有办法监听Javascript 侦听元素禁用事件,javascript,jquery,html,css,Javascript,Jquery,Html,Css,有没有办法监听禁用的DOM属性更改 大概是这样的: setTimeout(function () { $("#myElem").prop('disabled', true); }, 1500); $("#myElem").on('disabled', function(e){ alert('my custom code'); }); 这里还有一个 编辑:如果可能,我想要一个通用的解决方案。例如,在我的应用程序中,我使用一个MVVM框架(Knockout),它在内部处理属性更改
禁用的DOM属性更改
大概是这样的:
setTimeout(function () {
$("#myElem").prop('disabled', true);
}, 1500);
$("#myElem").on('disabled', function(e){
alert('my custom code');
});
这里还有一个
编辑:如果可能,我想要一个通用的解决方案。例如,在我的应用程序中,我使用一个MVVM框架(Knockout),它在内部处理属性更改:
<button data-bind="disable: time > 3">
</button>
但这似乎不起作用。您应该使用:
//设置新的观察者
var观察者=新的突变观察者(功能(突变){
突变。forEach(功能(突变){
//检查修改的attributeName是否为“已禁用”
if(mutation.attributeName==“disabled”){
警报(“禁用已更改”);
}
});
});
//配置为仅侦听属性更改
var config={attributes:true};
//开始观察迈勒姆
observer.observe(myElem,config);
//测试观察者会被触发
setTimeout(函数(){
myElem.disabled=true;
}, 2000);代码>
您可以有一个时间间隔来检查它是否被禁用
setTimeout(函数(){
$(“#third”).prop('disabled',true);
}, 1500);
var test=window.setInterval(函数(){
var d=$('third').attr('disabled');
如果(d=='disabled'){
警报(“我的自定义代码”);
清除间隔(试验);
}
}, 500);代码>
第一
第二
第三个
NB:如果您的按钮
位于字段集
内,您可能需要小心,该字段集也可以被禁用(您还需要观察该元素)
jQuery.propHooks.disabled = {
set: function (el, value) {
if (el.disabled !== value) {
el.disabled = value;
value && $(el).trigger('disabledSet');
!value && $(el).trigger('enabledSet');
}
}
};