如何通过文本获取选择选项的值

时间:2013-10-04 14:19:13

标签: jquery select

我的下拉列表类似于以下内容:

<select type="select" id="ddl">
    <option value="0">Select...</option>
    <option value="1">Blue</option>
    <option value="2">Red</option>
    <option value="3">Green</option>
    <option value="4">Yellow</option>
</select>

当我有文本时,我需要获取选项的值,与是否选择任何内容无关

我试过了$('#ddl[text=Blue]).value(),但那不行。我不知道还有什么可以尝试。

感谢。

SELECT EXAMPLE FIXED (我复制/粘贴错误的行 - sheesh !;))

3 个答案:

答案 0 :(得分:3)

您的代码存在一些问题:

$('#ddlDirector[text=Blue]).value()
  1. id仅为ddl,而非ddlDirector
  2. 您正在尝试将attribute-equals选择器应用于该元素(当您要将其应用于其中的<option>元素时)。
  3. 您尝试使用attribute-equals选择器,但text元素上没有<option>属性。
  4. 您可以使用:contains选择器:

    $('#ddl option:contains("Blue")').val();
    

    如果您要使用它,可能值得创建一个函数来执行此操作:

    function getValueFromText(selectId, optionText) {
        return $('#' + selectId + ' option:contains("' + optionText + '")').val();
    }
    

    然后用:

    调用它
    var blueValue = getValueFromText('ddl', 'Blue');
    

答案 1 :(得分:3)

我可以想到两个选择:

如果通配符搜索正常,则第一个将起作用(例如,匹配&#34;蓝色&#34;和#34;蓝调&#34;):

$('#ddl option:contains("Blue")').val();

这只会找到完全匹配的内容:

$('#ddl option').filter(function() { return $(this).text() == 'Blue'; }).val();

http://jsfiddle.net/TEqef/

答案 2 :(得分:2)

JSFiddle:http://jsfiddle.net/thfg5/2/

var color = "Red";
alert($('#ddl option:contains("' + color + '")').attr("value"));