javascript中的事件处理程序

时间:2011-11-24 03:58:03

标签: javascript

我正在寻找两个功能:

var MyObject = new Object();
MyObject.MyProperty = 1;

function ListenToChange() {
  here I want to listen to changes in MyProperty1 and do something when it changes
}

function ThrowEvent () {
  here I change the value of MyProperty every 5 seconds
  setTimeOut('ThrowEvent', 5000);
}

我查看了addEventListener属性,但看起来它适用于DOM对象。我想过使用ThrowEvent函数来改变隐藏div的值并用$('#HiddenDiv')来监听隐藏值的变化.change()但是我想知道是否有更好的方法可以做它与addEventListener。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

这里有一个我想出的例子。它并不像约翰的例子那样富有魅力,但它完成了工作。改进的建议非常受欢迎。

http://jsfiddle.net/yKYRs/

var MyObject = new Object();

MyObject.MyProperty = 1;

MyObject.MyProperty_Set = function(val) {   
    this.MyProperty = val;   
    ListenToChange();
}

function ListenToChange() {
    console.log('My Property was changed');
}

MyObject.MyProperty_Set(2);

答案 1 :(得分:1)

我可以从你的例子中推断出你正在使用jQuery;您可以在更改属性值时随时触发自定义事件:

var my_obj = {my_prop: 1}

function ListenToChange(event, newval) {
  console.log('my_prop is now' + newval)
}
$.bind("propchange:my_prop", ListenToChange)

function ThrowEvent () {
  $.trigger('propchange:my_prop', my_obj.my_prop)
  setTimeOut('ThrowEvent', 5000);
}

答案 2 :(得分:0)

您似乎在ES5 setget之后,但是它们无法在ECMAScript Ed 3环境中运行,您需要为此编写自己的getter和setter函数。

如果您想监听DOM的更改,则W3C DOM 2 Events规范包含mutation events,但我认为它并未广泛实施。有一个level 3 working draft弃用了许多2级功能。