【问题标题】:Trigger CustomEvent in Vanilla JS在 Vanilla JS 中触发 CustomEvent
【发布时间】:2018-05-17 12:25:24
【问题描述】:

我正在尝试在 vanilla javascript 中创建自定义事件,但并不真正了解如何触发它。据我所知有jQuery方法trigger('customEvent'),但是Vanilla JS是怎么做的呢?找不到任何相关信息。

创建CustomEvent

var addColor = function (elem) {

    elem.classList.add('red');
    var event = new CustomEvent('madeRed');
    elem.dispatchEvent(event);
};

addEventListener 附加到元素

var elem = document.querySelector('div');
addColor(elem);

elem.addEventListener('madeRed', function (elem) {
    elem.classList.add('color-do-changed');
}, false);

【问题讨论】:

  • 那么您的实际问题是什么?顺便说一句,您在添加事件侦听器之前调度事件。

标签: javascript dom-events


【解决方案1】:

您的代码运行良好,您只是决定在调用它之后 监听事件。此外,如果您想传递自定义数据,请通过detail 传递。您没有传递任何东西,但希望事件参数成为您的元素。

var elem = document.querySelector('div');

var addColor = function (elem) {
    elem.classList.add('red');
    var event = new CustomEvent('madeRed', {
      detail: {
        elem
      }
    });
    elem.dispatchEvent(event);
};

elem.addEventListener('madeRed', function (event) {
    event.detail.elem.classList.add('color-do-changed');
}, false);


addColor(elem);
.red { color: red }
.color-do-changed { text-decoration: underline }
<div>Make me red</div>

【讨论】:

  • 所以要触发它我必须简单地调用 elem.dispatchEvent(event); ?
  • @DavidC.Yes,如果你想通过一些自定义数据,你只需要第二个参数
猜你喜欢
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 2017-01-29
相关资源
最近更新 更多