从json文件中选择一个特定的数组

时间:2013-11-02 20:24:53

标签: javascript jquery html css json

我有一张欧洲地图和一个JSON文件。 JSON文件显示每个国家2011年的失业率。同样在JSON文件中有x和y元素,因此我可以在地图中的每个国家/地区的顶部放置一个蓝色圆圈。

我想要做的是,当我将鼠标悬停在其中一个圈子(这是一个国家/地区)时,要从JSON文件中获取失业率并显示它。

我的问题是如何从我的JSON文件中抓取我在地图中悬停的特定国家/地区的'rate'元素?

JSON文件:

[
{ "year": "2011", "country": "Finland", "rate": 8.0, "x":681, "y":18 },
{ "year": "2011", "country": "Sweden", "rate": 7.6, "x":486, "y":114 },
{ "year": "2011", "country": "Estonia", "rate": 13.6, "x":625, "y":206 },
{ "year": "2011", "country": "Latvia", "rate": 17.1, "x":638, "y":239 },
{ "year": "2011", "country": "Lithuania", "rate": 16.7, "x":626, "y":274 },
{ "year": "2011", "country": "Denmark", "rate": 7.5, "x":388, "y":239 },
{ "year": "2011", "country": "Netherlands", "rate": 4.3, "x":322, "y":345 },
{ "year": "2011", "country": "United Kingdom", "rate": 7.7, "x": 178, "y": 281 },
{ "year": "2011", "country": "Ireland", "rate": 14.1, "x": 79, "y": 310 },
{ "year": "2011", "country": "Belgium", "rate": 7.1, "x": 306, "y": 398 },
{ "year": "2011", "country": "Luxembourg", "rate": 4.7, "x":328, "y":422 },
{ "year": "2011", "country": "Germany", "rate": 6.3, "x":402, "y":388 },
{ "year": "2011", "country": "Poland", "rate": 9.4, "x":574, "y":347 },
{ "year": "2011", "country": "Czech Republic", "rate": 6.8, "x":499, "y":419 },
{ "year": "2011", "country": "Slovakia", "rate": 13.6, "x":529, "y":418 },
{ "year": "2011", "country": "Hungary", "rate": 11.0, "x":496, "y":460 },
{ "year": "2011", "country": "Austria", "rate": 4.5, "x":440, "y":486 },
{ "year": "2011", "country": "Slovenia", "rate": 8.1, "x":481, "y":521 },
{ "year": "2011", "country": "France", "rate": 9.6, "x": 276, "y": 497 },
{ "year": "2011", "country": "Italy", "rate": 8.0, "x":448, "y":608 },
{ "year": "2011", "country": "Romania", "rate": 7.1, "x":681, "y":565 },
{ "year": "2011", "country": "Bulgaria", "rate": 11.2, "x": 671, "y": 600 },
{ "year": "2011", "country": "Greece", "rate": 15.2, "x": 617, "y": 693 },
{ "year": "2011", "country": "Spain", "rate": 20.7, "x": 150, "y": 663 },
{ "year": "2011", "country": "Portugal", "rate": 12.3, "x": 75, "y": 660 }
]          

jQuery文件

$(document).ready(function(){
$.getJSON("eu.json", function(data) {
console.log("Data loaded successfully");
$.each(data, function(i, elem) {
        $('<div></div>').addClass('dataPt').css({
            "margin-left": elem.x + "px",
            "margin-top": elem.y + "px",
            "border-width": elem.rate + 5 + "px"
        }).appendTo('#map');
        $('div.dataPt').hover(function(){
    $(this).addClass("dataPtHover");

},function(){
    $(this).removeClass("dataPtHover");
}); 
});
});
});

这是一个jsfiddle,所以你们可以更多地了解我正在尝试做的事情。

http://jsfiddle.net/RSEyg/

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用jquery数据,如下所示:(更新小提琴:http://jsfiddle.net/RSEyg/3/

$(document).ready(function(){
  $.each(data, function(i, elem) {
            $('<div></div>').addClass('dataPt').css({
                "margin-left": elem.x + "px",
                "margin-top": elem.y + "px",
                "border-width": elem.rate + 5 + "px"
            }).appendTo('#map').data("rate", elem.rate);

    });

   $('div.dataPt').hover(function(){
        $(this).addClass("dataPtHover");
        $("#unResult").text($(this).data("rate"))        

    },function(){
        $(this).removeClass("dataPtHover");
    }); 


});

如果您需要获取每个点的国家/地区的其他属性,您可以将整个对象存储在数据中,并根据需要访问道具。