我在一个小组中有许多形状,需要为它们听pointerenter
和pointerleave
事件。当前,我将事件侦听器添加到每个形状中,但是据我所知,最好是由一个侦听器覆盖所有形状。
在下面的示例中,为tap
:https://developer.here.com/api-explorer/maps-js/v3.0/events/map-objects-event-delegation添加事件监听器,但我想对pointerenter
和pointerleave
做同样的事情,但是无论如何尝试我不能解雇他们中的任何一个。
我已尝试将其添加到container
中,如上例所示:
container.addEventListener('pointerenter', function(event){
console.log(event.target);
});
还有map
:
map.addEventListener('pointerenter', function(event){
console.log(event.target);
});
tap
事件的触发效果很好,但是对于pointerenter
和pointerleave
,我目前被迫将两个侦听器添加到每个形状中。
答案 0 :(得分:2)
使用当前代码段,仅当鼠标进入顶级对象,地图或容器时,才会触发指标输入事件。
但是,如果使用addEventListener
函数的第三个可选参数,并将其设置为true,则可以实现所需的内容,以指示处理程序应在期间进行侦听捕获阶段,而不是冒泡阶段:
map.addEventListener('pointerenter', function (event) {
console.log(event.target instanceof H.geo.Polygon);
}, true);