События jQuery работают, обычные события JS не работают - PullRequest
0 голосов
/ 25 апреля 2018

У меня странная проблема с обработкой событий в JavaScript. Большинство моих событий работают нормально, используя следующий формат:

var myCustomEvent = new CustomEvent('myEvent', {
    detail: {data: myData}
});
this.element.dispatchEvent(myCustomEvent);

Где this.element относится к переменной element в пользовательском объекте. Этот код будет вызываться в одной из функций-прототипов этого объекта. Соответствующий обработчик событий выглядит следующим образом:

d3.select('#container').on('myEvent', function() {
    that.foo(d3.event.detail);
})

Этот обработчик выполняется в функции-прототипе другого объекта.

Опять же, это обычно работает нормально, однако я столкнулся с несколькими местами, где этот код не работает. Событие никогда не вызывает обработчик. Фактически, единственный способ, которым мне удалось зарегистрировать событие в обработчике, - это использовать jQuery:

$(this.element).trigger('myEvent', [{data: myData}]);

С обработчиком событий:

$(d3.select('#container').node()).on('myEvent', function(e, data) {
    that.foo(data);
})

Я понимаю, что это на самом деле не воспроизводимый пример, но мне интересно, сталкивался ли кто-нибудь с чем-то подобным раньше или у кого-нибудь есть идеи относительно того, в чем может быть проблема.

...