我需要检查<select>是否有一个文本等于特定值的选项。

例如,如果有一个<option value="123">abc</option>,我将寻找"abc"。

有选择器来做这个吗?

我在寻找类似于$('#选择选项[值="123"]');除了文本。


当前回答

这对我很有用

$('#mySelect option:contains(' + value + ')').attr('selected', 'selected');

其他回答

这在jQuery 1.6中是有效的(注意:在开括号前是冒号),但是在新版本(当时是1.10)中无效。

$('#mySelect option:[text=abc]")

使用以下

$('#select option:contains(ABC)').val();

2022年8月25日。

对于jQuery v3.5.1,真正对我有用的是:

$('#selectID option:contains("label")').prop('selected', true);

如果你在一个变量中有文本,这样做:

  ddText = 'Text to find';
  $('#selectID option:contains("' + ddText + '")').prop('selected', true);

这可能会有所帮助:

$('#test').find('option[text="B"]').val();

演示小提琴

这将为你提供带有文本B的选项,而不是包含文本B的选项。

对于最新版本的jQuery,上述问题无法解决。正如下面Quandary所评论的,这是jQuery 1.9.1的工作原理:

$('#test option').filter(function () { return $(this).html() == "B"; }).val();

更新的小提琴

您可以使用:contains()选择器来选择包含特定文本的元素。 例如:

$('#mySelect option:contains(abc)')

要检查给定的<select>元素是否有这样的选项,使用.has()方法:

if (mySelect.has('option:contains(abc)').length)

要查找所有包含此选项的<select>,请使用:has()选择器:

$('select:has(option:contains(abc))')