是否可以通过回调检测javascript变量中的更改?
有没有一种方法可以添加侦听器或将事件绑定到值而不是html元素 因此,当值更改时,而不是单击按钮时,会触发事件,等等 假设代码:是否可以通过回调检测javascript变量中的更改?,javascript,jquery,Javascript,Jquery,有没有一种方法可以添加侦听器或将事件绑定到值而不是html元素 因此,当值更改时,而不是单击按钮时,会触发事件,等等 假设代码: var changingValue = 1; $('button').on('click',function(){ changingValue = changingValue + 1; }); $(changingValue).on('change',function(){ alert("event triggered, the new value
var changingValue = 1;
$('button').on('click',function(){
changingValue = changingValue + 1;
});
$(changingValue).on('change',function(){
alert("event triggered, the new value is:" + this)
});
如果使用这样的对象,则可以:
function Changing(initialValue, valueListener) {
this._value = initialValue;
this._listener = valueListener;
}
Object.defineProperties(Changing.prototype, {
value: {
get: function() {
return this._value;
},
set: function(value) {
this._value = value;
this._listener(this._value);
}
}
});
然后你可以做:
var changingValue = new Changing(1, function(value) {
alert("event triggered, the new value is: " + value);
});
$('button').on('click',function(){
changingValue.value += 1; // will alert "event triggered, the new value is: ..."
});
我不明白,如果你点击按钮,值就会增加。这是您的更改事件。
changingValue
应该是一个有效的选择器。例如,我有一个整数,它被几个方法修改。与将同一事件添加到其他几个方法相比,将事件添加到正在更改的值将更简单,代码也更少。重复的问题在过去的4年里没有得到证实的答案,这就是我再次问的原因。谢谢你的评论。谢谢,看起来很管用。关于浏览器兼容性有什么想法吗?它应该适用于所有现代浏览器,但是如果你需要的话,还有一个polyfill@SamJones