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