【问题标题】:How do I get a set off a function call when a bool turns to true? [duplicate]当 bool 变为 true 时,如何设置函数调用? [复制]
【发布时间】:2013-05-25 10:52:35
【问题描述】:

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

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

【问题讨论】:

  • 这里需要更多上下文。到目前为止有什么?你尝试了什么?为什么您尝试的方法不起作用?
  • 没有事件来检查变量是否改变,除了使用间隔和反复检查变量,或者做大多数人做的事情,在输入改变时触发函数而不是改变变量。

标签: javascript jquery


【解决方案1】:

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

Listening for variable changes in JavaScript or jQuery

【讨论】:

    【解决方案2】:

    当值发生变化时,使用自定义 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 产生的性能影响更少。

    【讨论】:

    • “旧 IE”是指版本 8 和 9?
    猜你喜欢
    • 1970-01-01
    • 2012-06-19
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多