javascript - 触发隐藏在函数内但绑定(bind)到 'window' 的自定义事件

标签 javascript jquery events

我认为我可以通过执行 window.dispatchEvent(test) 来调度 test 事件。事实上,如果我将事件监听器从 test 更改为 click,它就会触发警报。

我做错了什么?

var functionName = function () {
    function functionName() {

        // bind method
        this.doSomething = this.doSomething.bind(this);

        this.setupListeners();
    }

    functionName.prototype.setupListeners = function setupListeners() {
        window.addEventListener('test', this.doSomething);
    };

    functionName.prototype.doSomething = function doSomething(event) {
        alert('Hello!');
    };

    return functionName;

}();

最佳答案

您必须像这样创建事件对象:

var event = new Event('test');

// Dispatch the event.
window.dispatchEvent(event);

查看工作片段:

var functionName = function() {
  function functionName() {

    // bind method
    this.doSomething = this.doSomething.bind(this);

    this.setupListeners();
  }

  functionName.prototype.setupListeners = function setupListeners() {
    window.addEventListener('test', this.doSomething);
  };

  functionName.prototype.doSomething = function doSomething(event) {
    alert('Hello!');
  };

  return functionName;

}();

var myfun = new functionName();

var event = new Event('test');

// Dispatch the event.
window.dispatchEvent(event);

关于javascript - 触发隐藏在函数内但绑定(bind)到 'window' 的自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39031543/

相关文章:

javascript - 为什么我的 jQuery 选择器不适用于其中包含冒号和句点的 ID?

javascript - 一页滚动点导航在 Javascript 和基于 jQuery 的 url 中平滑过渡

javascript - Highcharts 固定/ float 轴

javascript - 指令内未触发滚动事件 - angular.js

c# - 这是我为控件设置事件的最佳方式吗?

javascript - 从 AJAX 请求反序列化 Webmethod 中的 JSON

javascript - 使用 gulp-angular-gettext 从 JS 文件中提取字符串不起作用

javascript - Jquery -> Vanilla javascript?

javascript - 隐藏以及如何使用 javascript 显示 Bootstrap 警报消息

javascript - Google Maps API v3 - 为什么没有事件上下文?