我是一个有点新手的程序员,对 javascript/jquery 很陌生,但我认为我理解 javascript 事件。显然不是。我无法让事件监听器按我希望的方式工作。
给定 JavaScript:
var Thing = {
//stuff
update: function() {
$.event.trigger({type:'stateUpdate', more:stuff});
}
};
var Room = {
//more stuff
updateHandler: function (e) {
//handle event here
}
};
如果我做jquery:
$(document).on('stateUpdate', $Room.updateHandler);
然后它工作正常,但我不能这样做
$(Room).on('stateUpdate', $Room.updateHandler);
或
Room.addEventListerner('stateUpdate', $Room.updateHandler);
第一个不执行任何操作,第二个给出 .addEventListerner 不是函数错误。
我用谷歌搜索了好几个小时,还是没找到答案。我发现一些内容说 .addEventListener 仅适用于实现 EventListener 的对象,一些关于 handleEvent 的内容,以及一些关于自动实现 EventListener 的函数的内容。没有关于如何让对象实现它的内容。有没有办法向不是函数的 javascript 对象添加监听器?我是否必须创建一个事件处理程序对象,或者使用“文档”或“窗口”并让它调用处理程序?看起来真的很难看。
对象首先应该是函数吗?那行得通吗?看来目前的观点是,让一切功能都只是试图让 javascript 变成它不是的东西。
最佳答案
据我所知,无法向普通对象添加事件监听器,因为它没有放置在 DOM 内。事件在 DOM 内部触发并冒泡,因此自定义对象的事件监听器不会接收到它。
有一个http://www.bobjs.com/可以帮助您实现自定义事件的框架。
关于javascript - 如何将事件监听器附加到 JavaScript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17829660/