好的我有一个国家下拉,只想展示美国和加拿大
我正在看这样的事情,但不认为我这样做是正确的
// Filter Countries
$('#selectId').filter(function() {
return $('#option').val() == ('USA' || 'CANADA');
});
示例HTML:
<select id="country">
<option value="AFG">Afghanistan</option>
<option value="ALB">Albania</option>
<option value="ALG">Algeria</option>
<option value="CANADA">Canada</option>
<option value="USA">United States</option>
</select>
答案 0 :(得分:8)
||构造你有无效。试试这个。
$(this).val() == 'USA' || $(this).val() == 'CANADA';
要删除不匹配的选项,您可以执行以下操作。
$().ready( function () {
$('#country option').filter(function() {
return !($(this).val() == 'USA' || $(this).val() == 'CANADA');
}).remove();
});
答案 1 :(得分:1)
或者,如果列表中有很多项目需要过滤,或者您想要更改要过滤的项目,请使用:
// define this anywhere
Array.prototype.inArray = function (value) {
var i;
for (i=0; i < this.length; i++) {
if (this[i] === value) {
return true;
}
}
return false;
};
// your choice on how to provide this list, I'm using
// something simple as an example
var want = ['USA', 'CANADA'];
// now, somewhere, this filter happens
$('#selectId').filter(function() {
return want.inArray($('#option').val());
});
答案 2 :(得分:1)
那里有几个问题......你需要使用正确的选择器#country,过滤器只返回对象,它实际上不会对它们起作用......复合OR语法在JS中不起作用...
这有效(经过测试):
$('#country').children().each(function() {
if ($(this).val() != 'USA' && $(this).val() != 'CANADA') $(this).remove();
});
你必须使用remove()方法,因为hide()不会对选项元素起作用。