过滤器选择[attr!= Array]

时间:2013-07-24 18:45:57

标签: jquery arrays attributes

我有select个国家/地区,其值为2个字符代码。

<select>
    <option value=""> </option>
    <option value="AF">Afghanistan</option>
    <option value="AX">Åland Islands</option>
    ...
    <option value="ZW">Zimbabwe</option>
</select>

我想禁用所有不在正在生成的数组中的选项。

var allowedCountries = ["AF", "AX", "AL", "DZ", "AS", "AD", "AO"];

有没有办法用.filter()执行此操作,还是必须循环选项?

2 个答案:

答案 0 :(得分:2)

$("option").filter(function() {
    return allowed_countries.indexOf(this.value) == -1;
}).prop('disabled', true);

您应该将""放入allowedCountries,以便取消选择菜单。要么是这样,要么在过滤后重新启用它。

答案 1 :(得分:1)

您可以尝试将inArrayfilter

一起使用
$("option").filter(function (i) {
    return $.inArray(this.value, allowedCountries) == -1
}).prop("disabled", true);

演示:http://jsfiddle.net/hungerpain/cJVxC/1/