将自定义事件绑定到JavaScript对象?

时间:2011-03-31 20:42:42

标签: javascript events object binding

我无法弄明白该怎么做。它似乎是这样的:

function MyObject() {
    this.fireEvent("myEvent");
}

然后在另一个JavaScript文件中:

var obj = new MyObject();
obj.addEventListener("myEvent", function() {
    alert("Event Fired");
});

但当然它不起作用。我的问题是,我该怎么做呢?

1 个答案:

答案 0 :(得分:4)

在您的示例中,您将在构造函数中立即触发事件(在附加事件侦听器之前)。尝试将触发逻辑移动到单独的函数中。

<强>更新

此外,您似乎没有正确地开展活动。有关如何以跨浏览器方式正确触发事件的详细信息,请参阅this article。从那篇文章:

function fireEvent(element,event){
    if (document.createEventObject){
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt)
    }
    else{
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}