jQuery - обнаруживает изменение логического значения - PullRequest
2 голосов
/ 11 марта 2012

Есть ли способ определить, изменяется ли глобальное логическое значение с false на true с помощью jQuery?

Ответы [ 3 ]

8 голосов
/ 11 марта 2012

Да, используйте пару геттер / сеттер, из которой сеттер прерывает настройку переменной: 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);
        }​​
    });
})();
0 голосов
/ 11 марта 2012

Сохранить массив обратных вызовов функций в качестве «наблюдателей». Когда что-либо меняет логическое значение с помощью вашей интерфейсной функции (например, setBooleanValue (True);), затем выполняйте итерацию по массиву обратных вызовов и вызывайте каждую функцию, чтобы уведомить наблюдателей.

0 голосов
/ 11 марта 2012

Решение может быть

<!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
  • Firefox 3.6
  • Google Chrome 7
  • Safari 5.0.1
  • Opera 10

Вид здесь .

...