我在<select>
中有很多独特的选项。我需要添加一个新选项,只要它是唯一的并且不存在于现有选项中。
如何使用jquery查找给定option
中是否已存在给定的select
?
例如:
<select id="combobox">
<option value="">Select one...</option>
<option value="Apple">Apple</option>
<option value="Banana">Banana</option>
<option value="Pears">Pears</option>
</select>
答案 0 :(得分:6)
if (!$("#combobox option[value='Apple']").length)
// Add it
使其可重复使用可以是:
if (!$("#combobox option[value='" + value + "']").length)
// Add it
不区分大小写:
var isExist = !$('#combobox option').filter(function() {
return $(this).attr('value').toLowerCase() === value.toLowerCase();
}).length;
完整代码:(演示版)
$('#txt').change(function() {
var value = this.value;
var isExist = !!$('#combobox option').filter(function() {
return $(this).attr('value').toLowerCase() === value.toLowerCase();
}).length;
if (!isExist) {
console.log(this.value + ' is a new value!');
$('<option>').val(this.value).text(this.value).appendTo($('#combobox'));
}
});
答案 1 :(得分:2)
我认为您想要按value
而不是文字内容进行搜索。在你的例子中,它们总是相同的,但可能它们并不总是......
var toAdd = 'Apricot',
combobox = $('#combobox');
if (!combobox.find('option[value="' + toAdd + '"]').length) {
combobox.append('<option value="' + toAdd + '">' + toAdd + '</option>');
}
答案 2 :(得分:1)
假设新的选项文本出现在newOption
变量中:
$('button').click(
function() {
var newOption = $('#newOptionInput').val(),
opts = [];
$('#combobox option').each(
function() {
opts.push($(this).text());
});
if ($.inArray(newOption, opts) == -1) {
$('<option />')
.val(newOption)
.text(newOption)
.appendTo('#combobox');
}
});
已修改以更正上述代码(我忘记了$.inArray()
返回-1
,而未找到值时false
),并使用了更合适的选择器。
参考文献:
答案 3 :(得分:0)
if ($('#combobox').find('option[value="Pear"]').length) {
// there's pear
} else {
// nope, no pear
}