JQuery 中如何检查一个选项是否已经存在于 Select 下拉选项里

JQuery 中如何检查一个选项是否已经存在于 Select 下拉选项里?

我想动态添加选项到选择,所以我需要检查选项是否已经存在,以防止重复。

182613 次浏览

如果它已经存在,则返回true:

$("#yourSelect option[value='yourValue']").length > 0;
if ( $("#your_select_id option[value=<enter_value_here>]").length == 0 ){
alert("option doesn't exist!");
}

不管用,你必须这样做:

if ( $("#your_select_id option[value='enter_value_here']").length == 0 ){
alert("option doesn't exist!");
}

使用jQuery的另一种方式:

var exists = false;
$('#yourSelect  option').each(function(){
if (this.value == yourValue) {
exists = true;
}
});
var exists = $("#yourSelect option")
.filter(function (i, o) { return o.value === yourValue; })
.length > 0;

这具有自动转义值的优点,这使得文本中的随机引号更容易处理。

它帮助我:

  var key = 'Hallo';


if ( $("#chosen_b option[value='"+key+"']").length == 0 ){
alert("option not exist!");


$('#chosen_b').append("<option value='"+key+"'>"+key+"</option>");
$('#chosen_b').val(key);
$('#chosen_b').trigger("chosen:updated");
}
});

我也遇到过类似的问题。而不是每次通过循环的选择控件在dom中运行搜索,我将jquery的select元素保存在一个变量中,并这样做:

function isValueInSelect($select, data_value){
return $($select).children('option').map(function(index, opt){
return opt.value;
}).get().includes(data_value);
}

虽然大多数其他答案对我有用,但我使用了.find():

if ($("#yourSelect").find('option[value="value"]').length === 0){
...
}