无法.empty()附加的元素

时间:2015-11-03 10:44:04

标签: javascript jquery

state.on('change', function(){
    city.empty();
    $.getJSON("pincodes.JSON", function(pincodes){
        var key = state.val(); 
        for (var j= 0; j < pincodes['address'].length; j++) {
            if (pincodes['address'][j]['circlename'] == key) {
                temp.push(pincodes['address'][j]['regionname']);
            }
        } 
        cities = $.unique(temp);
        for (var k = 0; k < cities.length; k++) {   
            city.append('<option>' + cities[k] + '</option>');
        }  
    });
});

在上面的state = $('#state')中,上面的作品很好地填补了选择“州”的城市。但问题是,当选择新的州时,之前填满的城市也在那里。即使我在每个change(上尝试了 .empty

1 个答案:

答案 0 :(得分:0)

您不会清空temp数组。因此,每次调用此函数时,都会继续将项目附加到temp数组中。

您只需在代码中添加以下行:

state.on('change', function() {
    city.empty();
    temp = []; // <---
    $.getJSON("pincodes.JSON", function(pincodes) {

cities = $.unique(temp);如何,它将无效 根据 jQuery.unique() 文档,此功能

  

在适当的位置对DOM元素数组进行排序,并删除重复项。请注意,这仅适用于DOM元素的数组,而不适用于字符串或数字。

所以,这不是正确的用法。如果从JSON获得非唯一值,则需要使用其他方法来获取不同的值。这个主题有一个很好的SO article