通过JavaScript / jQuery插入后无法选择div

时间:2013-05-07 15:28:02

标签: javascript jquery json maps arcgis

我有一个地图的每一层的描述,通过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();

有什么想法吗?

http://jsfiddle.net/PazSs/2/

3 个答案:

答案 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)

我可以看到你的逻辑:

  1. 隐藏所有图层说明
  2. 然后只显示您想要查看的图层
  3. visible”是什么意思?那是个傻瓜吗?这个名字暗示了一个布尔值。

    如果它是布尔值,那么你的选择器

    $('#' + map_div_id + '_description_' + visible).show();
    

    看起来不会正常工作。

    您能否详细说明visible更多内容,并提供实际标记的示例?

    感谢。

答案 2 :(得分:0)

感谢jsFiddle。

我将其修改为调查,这是我的副本:

http://jsfiddle.net/PazSs/8/

我相信您的问题出在您的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数组中的地方,所以我从那里开始。检查您的逻辑并确保在需要时始终将图层放入。

让我知道它是否有效!