我遇到了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);
})
我意识到这不是一个真正可重复的例子,但我想知道是否有人之前遇到过这样的事情,或者对问题是什么有任何想法。