【问题标题】:jQuery - Detect change in Boolean valuejQuery - 检测布尔值的变化
【发布时间】:2012-03-11 16:34:28
【问题描述】:

有没有办法通过 jQuery 检测全局布尔值是否从 false 变为 true?

【问题讨论】:

标签: javascript jquery boolean detect


【解决方案1】:

是的,使用 getter/setter 对,setter 捕获变量的设置:http://jsfiddle.net/M768B/

(function() {
    var val = false;

    ​Object.defineProperty(window, "something", {
        get: function() {
            return val;
        },
        set: function(v) {
            val = !!v; // `!!` to force setting a boolean
            alert("Changed to " + val);
        }​​
    });
})();

【讨论】:

    【解决方案2】:

    将函数回调数组保留为“观察者”。当任何东西通过你的接口函数改变布尔值时(例如 setBooleanValue(True); )然后遍历回调数组并调用每个函数来通知观察者。

    【讨论】:

      【解决方案3】:

      解决办法可能是

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
      <title>JavaScript Object - watch () method example</title>
      </head>
      <body>
      <h1 style="color: red">JavaScript Object : watch() method</h1>
      <hr />
      <script type="text/javascript">
      //This is done to make the following JavaScript code compatible to XHTML. <![CDATA[ o = {x:10}
      o.watch("x",
      function (id,oldvalue,newvalue) {
      document.writeln("o." + id + " changed from "
      + oldvalue + " to " + newvalue+"<br />")
      return newvalue
      })
      o.x = 20
      o.x = 30
      o.x = 40
      //]]>
      </script>
      </body>
      </html> 
      

      兼容:

      • Internet Explorer 7
      • 火狐3.6
      • 谷歌浏览器 7
      • Safari 5.0.1
      • 歌剧 10

      见过here

      【讨论】:

      • 本网站的习惯是不仅发布链接,而且在您的答案中包含代码和详细信息,以便它独立存在。如果链接断开,您的答案仍然对社区有价值,并且会独立存在。使用edit 链接继续改进您的答案。 :)
      • 需要指出的是,watch 仅适用于 Mozilla,并且根据文档,它会对性能产生影响。他们推荐它进行调试。 developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多