如何更正我的代码以返回所有匹配的城市单独的div?

时间:2011-05-31 16:21:03

标签: javascript jquery html hash loops

我在一个函数中有以下JS代码,它响应用户按下enter(不显示)。我关注的部分代码如下所示:

   $.each(cityhash,function(key,value){
        if(value['city']== user_input) {
            $('#city').append(value['city']);
            $('#state').append(value['state']);
        }

我有以下哈希:

cityhash =  [{"address":"07288 Albertha Station","city":"Littelside","state":"Missouri"},{"address":"0615 Mervin Rapid","city":"Tessmouth","state":"South Carolina"},{"address":"779 Elody Lock","city":"Littelside","state":"New Mexico"}]

正如您所看到的, Littelside城市在哈希中出现两次。我的问题是如果有两个城市比赛,城市直接放在一起。例如LittelsideLittelside。我希望每个匹配的Littelside出现在它自己的div中。我该怎么做?

如何更正我的代码以返回所有匹配的城市

提前谢谢

3 个答案:

答案 0 :(得分:2)

我不是使用id="city"在一个元素中设置城市文本,而是使用id="cities"创建一个元素,然后在其中添加城市元素。

$('#cities').append('<div class="city">' + value['city'] + ', ' + 
    value['state'] + '</div>');

答案 1 :(得分:0)

这样的事情:

$('#city').append($("<div>").html(value['city']));

答案 2 :(得分:0)

var prev_city;

$.each(cityhash,function(key,value){
    if(value['city']== user_input) {
        $('#city').append(value['city']);
        $('#state').append(value['state']);

        if(value['city'] == prev_city){
            // Append to new div logic
        } else {
            prev_city = value['city'];
        }
    }
}

不确定您现在如何打印城市,但基本上您需要跟踪上一个城市,以了解是否需要追加另一个div。