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

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

有选择器来做这个吗?

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


当前回答

这可能会有所帮助:

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

演示小提琴

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

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

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

更新的小提琴

其他回答

这是我在jquery V3.6.0的工作在2022年

$("#select >option").filter( function()
{
    if ($(this).text() === "123")
    {
        $(this).prop("selected", true);
    }
});

这对我有用:$(“#test”).find(“选项:contains('abc')”);

使用prop而不是attr

$('#mySelect option:contains(' + value + ')').each(function(){
    if ($(this).text() == value) {
        $(this).prop('selected', 'selected');
        return false;
    }
    return true;
});

之前的建议在jQuery 1.7.2中都不适用,因为我试图根据文本框中的值设置列表的选定索引,而一些文本值包含在多个选项中。我最终使用了以下方法:

$('#mySelect option:contains(' + value + ')').each(function(){
    if ($(this).text() == value) {
        $(this).attr('selected', 'selected');
        return false;
    }
    return true;
});

这也是可行的。

$(" #测试”)。找到(“选择选项:包含(B)”).filter(":选择");