javascript - 如何将事件监听器附加到 JavaScript 变量

标签 javascript jquery custom-events

我是一个有点新手的程序员,对 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/

相关文章:

javascript - 在 Ckeditor 实例中通过 htmlbutton 插件插入文本之前重新定位插入符

javascript - AudioBufferSourceNode.buffer 已弃用?

jquery - 如何获取嵌套 div 的 ID 来构建 var

javascript - 是否有高级 javascript 编辑器可以执行类似于 Visual Studio 的 'go to definition' 之类的操作?

javascript - anchor 下载链接在 Firefox 中不起作用

javascript - load() 函数如何允许用户提供回调?

javascript - 为什么 jQuery(document).ready 不工作?/如何将 CSS 添加到 jQuery 中的元素?

javascript - 查看自定义事件的地理信息

java - 如何正确设置自定义事件

javascript - 使用自定义参数触发 JavaScript 事件并使用 jQuery 捕获它