javascript - jQuery 对象上的事件处理程序

标签 javascript jquery events

我试图将自定义事件绑定(bind)到 jQuery 对象,但它们不会触发。

示例:

environment = new function(){
this.events = $();
};

environment.events.on('preloader_done', function(){
    console.log('environment event handler');
});

environment.events.trigger('preloader_done');

$(document).on('preloader_done', function(){
    console.log('document event handler');
});

$(document).trigger('preloader_done');

在上面的示例中,仅触发绑定(bind)到文档的事件。参见jsfiddle: https://jsfiddle.net/ymhp5c8k/

我找不到任何信息来告诉我为什么这不起作用。

我知道我可以创建一个 JavaScript 对象,然后通过 jQuery 绑定(bind)事件,如下所示:

environment = new function(){
    this.jsobject = {};
};

$(environment.jsobject).on('preloader_done', function(){
    console.log('jsobject event handler');
});

$(environment.jsobject).trigger('preloader_done');

但我想知道是否有人能解释一下如何将其设置为 jQuery 对象,然后直接调用它,而不必每次都将其包装在 jQuery 中。

最佳答案

您只需要在构造函数中创建一个 jQuery 对象

environment = new function(){
    this.events = $({}); // Here
};

environment.events.on('preloader_done', function(){
    console.log('environment event handler');
});

environment.events.trigger('preloader_done');

这应该可以解决问题。

关于javascript - jQuery 对象上的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34061816/

相关文章:

javascript - 重新导出模块不适用于对象传播

javascript - onclick 移动谷歌地图中心点

javascript - 控制事件处理程序/监听器的执行顺序

javascript - 委托(delegate)单击事件仅在第二次单击前进后才起作用

javascript - 如何监听所有图片的error事件?

javascript - regexp(?) 用于从另一个 URL 中提取 URL

javascript - XMLHttpRequest 跨源请求仅支持协议(protocol)方案依次服务器

javascript - 是否可以向 window.scrollTo 添加持续时间和缓动?

javascript - 如何以 Laravel 形式开发 javascript 事件句柄

javascript - 如何将值从包含组件的状态传递回父组件?