在Vanilla JS中触发CustomEvent

时间:2018-05-17 12:25:24

标签: javascript dom-events

我正在尝试在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);

1 个答案:

答案 0 :(得分: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>
&#13;
&#13;
&#13;