如何检查JQuery select中是否已经存在选项


169

如何检查JQuery select中是否已经存在选项?

我想动态地将选项添加到select中,因此我需要检查该选项是否已经存在以防止重复。

Answers:


333

如果已经存在,则评估为true:

$("#yourSelect option[value='yourValue']").length > 0;

5
升级到Jquery 1.6 +,将yourValue括在引号中
Bob

1
是的 报价很重要。
bobetko

2
在jquery 1.7.1中为我工作,而没有将yourValue括在引号中
Mathias F

在上述解决方案中如何忽略大小写或toLowerCase?下拉列表是否需要$ .each?
本·塞沃斯

1
如果我们想实现区分大小写的匹配,那我们该怎么做?使用简单的$ .each函数?
Chaudhry Waqas'17

21

使用jQuery的另一种方式:

var exists = false; 
$('#yourSelect  option').each(function(){
  if (this.value == yourValue) {
    exists = true;
  }
});

6
-1您基本上是在自己做循环,而不是让jQuery像其他所有答案一样进行循环。尽管这可行,但它正在重新发明轮子。
彼得

14
不确定是否值得-1。这清楚地显示了该过程,这对初学者可能很有益。当然不是最佳答案,但这是一个有效的答案。
roberthuttinger 2013年

1
还有一些像我这样的手动方法。这还结合了在其中添加布尔值的步骤,而不是像其他方法那样产生0或1并必须对其进行转换。我说这两种方法都很好,因为您必须分别执行2个步骤。对我而言,这似乎对过程更可见,并且由于不像.length可能那样判断空白的长度,因此不太容易出错。
vapcguy 2015年

3
再加上一个,您也不必担心您的Value中的字符
Fabio

1
如果您不知道“ yourValue”是什么(例如,如果它是用户输入的话),那么这和alnort29的答案实际上是检查现有值的最佳方法。仅仅为了让“ jQuery做到这一点”而构建一个字符串将需要您进行输入清理,最终您将遇到困扰SQL数十年的代码实践。因此,-1是完全没有必要的。该问题甚至表明他们想“动态”插入值。不要动态地将字符串修补在一起。您也不会“从password =“'+ string +'”'的用户中选择1,对吗?
Aaa

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

2
您缺少右括号“ option [value = <enter_value_here>]”
KB。

17
var exists = $("#yourSelect option")
               .filter(function (i, o) { return o.value === yourValue; })
               .length > 0;

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


2

不起作用,您必须这样做:

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

1

对我有帮助:

  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");
                         }
  });

0

我有一个类似的问题。我没有通过选择控件的循环每次都通过dom运行搜索,而是将jquery select元素保存在变量中并执行以下操作:

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

0

尽管大多数其他答案都对我有用,但我还是使用.find():

if ($("#yourSelect").find('option[value="value"]').length === 0){
    ...
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.