Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 侦听元素禁用事件_Javascript_Jquery_Html_Css - Fatal编程技术网

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');
    }
  }
};