如何通过文本选择选项?

Hai*_*ood 198 jquery

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

例如,如果有<option value="123">abc</option>,我会寻找"abc".

有选择器吗?

我正在寻找类似于$('#select option[value="123"]');文本的东西.

Har*_*til 309

这有助于:

$('#test').find('option[text="B"]').val();
Run Code Online (Sandbox Code Playgroud)

演示小提琴

这将为您提供文本选项,B而不是包含文本的选项B.希望这可以帮助

对于最新版本的jQuery,上面的方法不起作用.如下面的Quandary评论,这适用于jQuery 1.9.1:

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

更新了小提琴

  • @Quandary但是,当一个简短的评论就足够时,这不是一个有效的理由来投票给答案.或者你是否期望他为每个新版本的jQuery重新测试他的所有答案? (82认同)
  • @KevinDeus:为什么选择downvote!?答案是jQuery的版本然后! (27认同)
  • 相反,使用$('#test option').filter(function(){return $(this).html()=="B";}).val(); (11认同)
  • 我认为downvote是由于上面的例子只是找到了选定的值,并没有设置选定的值。 (4认同)
  • nivs1987 是对的,而且我认为你必须使用“text”而不是“html”,比如 val selVal= $('#test option').filter(function () { return $(this).text() == "B"; }).val(); 那么你必须使用 selVal 来通过 $('#test').val(selVal); 选择想要的选项。 (3认同)

SLa*_*aks 132

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

$('#mySelect option:contains(abc)')
Run Code Online (Sandbox Code Playgroud)

要检查给定<select>元素是否具有此选项,请使用以下.has()方法:

if (mySelect.has('option:contains(abc)').length)
Run Code Online (Sandbox Code Playgroud)

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

$('select:has(option:contains(abc))')
Run Code Online (Sandbox Code Playgroud)

  • `:contains`现在不是决定性的,是吗? (3认同)
  • @Floyd:什么? (2认同)

Dr.*_*ius 30

之前的建议都没有在jQuery 1.7.2中为我工作,因为我试图根据文本框中的值设置列表的选定索引,并且一些文本值包含在多个选项中.我最终使用了以下内容:

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


Jay*_*hil 17

我面临同样的问题,下面是工作代码:

$("#test option").filter(function() {
    return $(this).text() =='Ford';
}).prop("selected", true);
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/YRBrp/83/


小智 14

这对我有用: $("#test").find("option:contains('abc')");

  • 一定要意识到这也会找到这个选项:<option> abcd </ option>. (4认同)
  • 你应该添加*为什么*它的工作原理的解释. (3认同)

小智 12

这是下拉列表中选择文本的最佳方法.

$("#dropdownid option:contains(your selected text)").attr('selected', true);
Run Code Online (Sandbox Code Playgroud)

  • 与类似的答案一样,这将找到一个选项,"这是你选择的文字加上更多". (3认同)

小智 5

I tried a few of these things until I got one to work in both Firefox and IE. This is what I came up with.

$("#my-Select").val($("#my-Select" + " option").filter(function() { return this.text == myText }).val());
Run Code Online (Sandbox Code Playgroud)

another way of writing it in a more readable fasion:

var valofText = $("#my-Select" + " option").filter(function() {
    return this.text == myText
}).val();
$(ElementID).val(valofText);
Run Code Online (Sandbox Code Playgroud)

Pseudocode:

$("#my-Select").val( getValOfText( myText ) );
Run Code Online (Sandbox Code Playgroud)

  • `"#my-Select" + "option"` 有什么意义?为什么不只是`“#my-Select option”`? (3认同)