Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在传单中的事件回调中设置层类名_Javascript_Svg_Leaflet - Fatal编程技术网

Javascript 在传单中的事件回调中设置层类名

Javascript 在传单中的事件回调中设置层类名,javascript,svg,leaflet,Javascript,Svg,Leaflet,我希望通过设置geojson特性的className来设置它的样式。如果将其直接放置在特征上,则效果非常好,如下所示: L.geoJson(geojson, { onEachFeature: function (feature, layer) { layer.setStyle({className: 'grid-cell'}); } }).addTo(map); 使用.css文件中定义的样式 path.grid-cell{ stroke-opacity: 1

我希望通过设置geojson特性的
className
来设置它的样式。如果将其直接放置在特征上,则效果非常好,如下所示:

L.geoJson(geojson, {
    onEachFeature: function (feature, layer) {
        layer.setStyle({className: 'grid-cell'});
    }
}).addTo(map);
使用.css文件中定义的样式

path.grid-cell{
  stroke-opacity: 1;
  stroke: #444;
  fill: #aaa;
}
但是,如果在功能的事件回调中添加,则它不起作用:

L.geoJson(geojson, {
    onEachFeature: function (feature, layer) {
        layer.on('click', function(e){
          this.setStyle({className: 'grid-cell'});
          this.bringToFront();
        });
    }
}).addTo(map);
令人惊讶的是
setStyle({})类名
,例如
颜色
填充不透明度
重量
等,code>在任何情况下都适用

例如


知道上面是什么吗?说明此问题。

有关此问题的讨论,请参见此处:。评论之一:

我认为setStyle实际上不应该更改类名。该类并不是真正的样式属性,处理
传单-
类所需的逻辑似乎是一种攻击。我认为
setClassName()
add
/
removeClass
API更合适


嗯,是的,这很有道理。能够使用.css处理向量样式,而不是将其隐藏在javascript中,这是非常有用的。我会留意最新消息。谢谢你的推荐。
L.geoJson(geojson, {
    onEachFeature: function (feature, layer) {
        // this works
        layer.setStyle({color: '#faa', fillOpacity: 0.4, weight: 1});

        // this works too
        layer.setStyle({className: 'grid-cell'});

        layer.on('click', function(e){
          // and this works
          layer.setStyle({color: '#afa', fillOpacity: 0.4, weight: 2});

          // BUT THIS DOES NOT WORK
          this.setStyle({className: 'grid-cell'});
          this.bringToFront();
        });
    }
}).addTo(map);