0

我有一个全局变量,仅在用户输入某些输入时才设置为 true,并且我希望能够触发函数。其中一些输入不是通过处理程序,所以我不能使用 JQuery change() 函数。

有关如何解决此问题的任何建议?

4

2 回答 2

3

当值更改时,使用自定义 getter 执行其他操作:

myGlobal=true;


(function(){
  var shadow=myGlobal;
Object.defineProperty(
   window, 
   "myGlobal", 
   {
     get: function() {return shadow;}, 
     set: function(v){alert( 'myGlobal is now ' + v); return shadow=v;}
   }
);

}());

myGlobal=false;
myGlobal=true;

这适用于老式的 IE,并且比 Object.watch() 和 polyfills 产生的性能影响更少。

于 2013-05-30T01:19:40.537 回答
0

您可以使用非标准的 object.watch。这是一个实现:https ://gist.github.com/eligrey/384583

请参阅侦听 JavaScript 或 jQuery 中的变量更改

于 2013-05-30T01:22:54.147 回答