在Leaflet中访问标记图标的HTMLElement

时间:2016-03-22 11:47:23

标签: javascript leaflet

我的地图上有一些带有自定义图标(DivIcons)的标记。

当我点击一个标记时,我想访问图标的HTMLElement,添加或删除类。

我发现访问HTMLElement的唯一方法是_icon属性。我知道这是私有财产,但我找不到另一种方式。

options.icon返回图标对象(由许多标记使用),而不是此标记的具体HTMLElement。

您是否知道一种安全的方式来访问标记的HTMLElement?

2 个答案:

答案 0 :(得分:4)

不幸的是,JavaScript没有私有属性的本机支持。但是,有几种技术可以模拟它们:一种使用前缀,另一种是闭包。

使用下划线前缀只是一种编码约定,并不是由语言强制执行的:没有什么可以阻止用户直接访问“应该是私有的”属性。此方法不安全,仅作为客户端代码的准则。所以我认为访问_icon财产不会造成任何伤害。

如果属性应该是私有的,不可能从外部访问,则通常将其设置为某个范围的局部变量,而不绑定到上下文。这种类型的变量只能在闭包的帮助下从外部访问,如果没有定义,则无法访问变量。

答案 1 :(得分:1)

我找到了一种记录方式来访问它:

由于我处于“点击”事件中,我可以在回调中使用event.originalEvent.target访问标记的HTMLElement。

http://leafletjs.com/reference.html#event-objects