javascript - 使用 Jquery 允许常规 JS 对象上的事件

标签 javascript event-handling jquery

我有一些 javaScript 类(ctor+prototype 方法),我希望它们的实例能够发出 evnet。

这样使用这个类的代码就可以像这样:

var instance=new SomeObject();
instance.on('customEventName',function(event){do_stuff()}

我在 JQUery 环境中工作,对于我使用的 .trigger 和 .on 的 UI 元素,这对我来说非常有用,我一直在徘徊什么是实现与常规对象相同的感觉的最佳方式。

我正在考虑根据自定义事件名称设置 $.Callbacks() 对象的映射,并根据对象的原型(prototype)添加 .on 和 .trigger 或者我可以只持有一个初始化为空的 eventsPoint 实例变量$() 并将原型(prototype)中的 .on 和 .trigger 方法连接到此 eventsPoint 对象。

任何其他/更好的想法?

最佳答案

jQuery 实际上允许您非常简单地执行此操作,就像您对 DOM 元素所做的那样:

var instance = new SomeObject();
$(instance).on("customEventName", function () {
    do_stuff();
})

// Later...
$(instance).trigger("customEventName");

所有事件处理程序都存储在 jQuery 的内部数据存储中,jQuery 会向您的对象添加一个属性,该属性保存该存储中的数据索引。

关于javascript - 使用 Jquery 允许常规 JS 对象上的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9109895/

相关文章:

javascript - 删除运算符在 Javascript 中不起作用

.net - 为什么在 .Net 中是 "new EventHandler(Handler)"?

javascript - $().bind 在没有准备好文档的情况下无法工作

javascript - 如何让 Xi JS x$ ('' ) 与现有的 jquery 代码一起工作 $ ('' )?

jQuery 实时更改问题

javascript - 小 Action 的 redux 状态

javascript - 如何使用 Ramda 计算数组中的重复项?

javascript - 在运行时将包添加到 dojo 配置

c# - 如何编写类库的程序集加载/初始化事件处理程序

javascript - 使用 parseJSON 解析 JSON 字符串时出错