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

Bil*_*lly 161 jquery

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

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

Tam*_*ege 312

如果已存在,则计算结果为true:

$("#yourSelect option[value='yourValue']").length > 0;
Run Code Online (Sandbox Code Playgroud)

  • 升级到Jquery 1.6 +,将yourValue括在引号中 (5认同)
  • 在jquery 1.7.1中为我工作,没有将yourValue括在引号中 (2认同)

小智 20

使用jQuery的另一种方法:

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

  • 不确定它是否值得.这明确地显示了这个过程,这对初学者来说很有用.当然不是最好的答案,但它是有效的. (13认同)
  • -1你基本上是自己做循环,而不是让jQuery像所有其他答案那样做.虽然这可行,但它正在重新发明轮子. (6认同)
  • 另外还有一个,你也不需要担心你的角色中的角色 (3认同)
  • 有些人喜欢手动方法,比如我。这还结合了在其中添加布尔值的步骤,而不是像其他那样生成 0 或 1 并必须对其进行转换。我说这两种方法都很好,因为无论哪种方式,你都必须执行两个步骤。对我来说,这对流程来说似乎更明显,并且通过不判断空格的长度(例如“.length”可能会做的事情)而不太容易出错。 (2认同)
  • 如果您不知道“yourValue”是什么(例如,如果它是用户输入),这和alnort29的答案实际上是检查现有值的最佳方法。仅仅为了让“jQuery 做到这一点”而构建单个字符串将需要您进行输入清理,并且您最终会得到困扰 SQL 数十年的代码实践。所以 -1 是完全没有根据的。这个问题甚至指出他们想要“动态”插入值。不要动态地将字符串修补在一起。您也不执行“从密码=”+字符串+“”的用户中选择1,是吗? (2认同)

Seb*_*Seb 19

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

  • 你错过了一个结束括号"选项[value = <enter_value_here>]" (2认同)

aln*_*h29 16

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

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


Str*_*bek 12

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

if ($("#yourSelect").find('option[value="value"]').length === 0){
    ...
}
Run Code Online (Sandbox Code Playgroud)