我有一个地图的每一层的描述,通过JSON对象生成。我为这些容器生成所有html,其中包含地图,图例和描述。
html_description += '<div ' + hide + ' id="'+ map_div_id + '_description_' + id + '">' + layer_info.description + '</div>';
// Set the description from the layer info
$('#' + map_div_id + '_description').html(html_description);
然后我想只显示某些描述(取决于显示的是哪个层)。所以下面应该工作,(因为它在我的控制台调试器中工作)。
// Hide Descriptions
$('#' + map_div_id + '_description div').hide();
$('#' + map_div_id + '_description_' + visible).show();
// Show Proper Description
console.log('#' + map_div_id + '_description_' + visible);
console.log($('#' + map_div_id + '_description_' + visible));
同样奇怪的是我可以操纵标题信号:
// THIS WORKS?!
$('#' + map_div_id + '_description').hide();
有什么想法吗?
答案 0 :(得分:0)
那个选择器:
$('#' + map_div_id + '_description div')
会在你的描述div中找到一个div。
假设'map_div_id'的值是'test',你的标记在插入后应该如下所示:
<div id="test_description">
<div> ...your description here </div>
</div>
当我看到你如何构建你的html_descriptions字符串时,看起来它看起来并不像......(只有当'layer_info.description'包含'...'时才会这样......
这是很多假设,你可能更容易向我们展示一些生成的标记和完整的脚本。使用jsfiddle
答案 1 :(得分:0)
我可以看到你的逻辑:
“visible
”是什么意思?那是个傻瓜吗?这个名字暗示了一个布尔值。
如果它是布尔值,那么你的选择器
$('#' + map_div_id + '_description_' + visible).show();
看起来不会正常工作。
您能否详细说明visible
更多内容,并提供实际标记的示例?
感谢。
答案 2 :(得分:0)
感谢jsFiddle。
我将其修改为调查,这是我的副本:
我相信您的问题出在您的dynamic_layer
数组中。我逐步完成了jsFiddle中的代码,该数组没有元素。
结果是你打电话
dynamic_layer[map_div_id].setVisibleLayers(layer_id);
它会崩溃,因为你要取消引用一个未定义的结果(null)。
我看到你正在填充上面的dynamic_layer
:
if (typeof geo_server != 'undefined' && geo_server != null) {
gp_server = gis_server + '/' + geo_server;
gp = new esri.tasks.Geoprocessor(gp_server);
} else {
// Adds a dynamic layer
dynamic_layer[map_div_id] = new esri.layers.ArcGISDynamicMapServiceLayer(full_map_server);
map[map_div_id].addLayers([dynamic_layer[map_div_id]]);
}
这似乎是唯一将对象填充到dynamic_layer
数组中的地方,所以我从那里开始。检查您的逻辑并确保在需要时始终将图层放入。
让我知道它是否有效!