1271

好吧,说我有这个:

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

如果我想在我的值为“2”时获得“选项 B”,选择器会是什么样子?

请注意,这不是询问如何获取所选文本值,而是询问其中任何一个,无论是否选中,具体取决于 value 属性。我试过:

$("#list[value='2']").text();

但它不起作用。

4

22 回答 22

1268

如果您想获得值为 2 的选项,请使用

$("#list option[value='2']").text();

如果您想获取当前选择的任何选项,请使用

$("#list option:selected").text();
于 2009-05-15T15:52:49.007 回答
1141

它正在寻找一个 id 的元素,list它的属性value等于2.
你想要的是以下的option孩子list

$("#list option[value='2']").text()
于 2008-10-13T04:08:03.723 回答
135

这对我来说非常有效,我正在寻找一种使用 MySQL 生成的选项发送两个不同值的方法,以下是通用和动态的:

$(this).find("option:selected").text();

如评论之一所述。有了这个,我能够创建一个动态函数,该函数适用于我想要同时获取值、选项值和文本的所有选择框。

几天前,我注意到当我使用此代码将网站的 jQuery 从 1.6 更新到 1.9 时,这停止工作......可能与另一段代码冲突......无论如何,解决方案是从find() 调用:

$(this).find(":selected").text();

那是我的解决方案……只有在更新 jQuery 后有任何问题时才使用它。

于 2011-07-29T18:55:23.707 回答
109

基于 Paolo 发布的原始 HTML,我想出了以下内容。

$("#list").change(function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

它已经过测试可以在 Internet Explorer 和 Firefox 上运行。

于 2011-05-02T12:25:54.453 回答
37
$("#list option:selected").each(function() {
   alert($(this).text());
});  

对于#list元素中的多个选定值。

于 2010-06-04T14:30:43.497 回答
37
  1. 如果页面上只有一个 select 标签,那么您可以在 id 'list' 中指定 select

    jQuery("select option[value=2]").text();
    
  2. 获取选定的文本

    jQuery("select option:selected").text();
    
于 2012-06-13T03:45:55.690 回答
24

尝试以下操作:

$("#list option[value=2]").text();

您的原始代码段不起作用的原因是您的标签是您的OPTION标签的子SELECT标签,该标签具有id list.

于 2008-10-13T04:08:45.657 回答
19

这是一个旧问题,有一段时间没有更新,现在正确的方法是使用

$("#action").on('change',function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

我希望这有帮助 :-)

于 2014-07-02T23:15:48.357 回答
17

我想获得选定的标签。这在 jQuery 1.5.1 中对我有用。

$("#list :selected").text();
于 2011-03-01T05:44:03.060 回答
17
$(this).children(":selected").text()
于 2013-04-03T11:21:19.230 回答
14

您可以使用函数获取选定的选项文本.text();

你可以这样调用函数:

jQuery("select option:selected").text();
于 2017-03-02T09:35:55.250 回答
13
$("#list [value='2']").text();

在 id 选择器后面留一个空格。

于 2010-05-31T06:38:46.203 回答
9

在使用 .each(function()...): “循环”动态创建的选择元素时$("option:selected").text();,并$(this + " option:selected").text()没有返回选定的选项文本 - 相反它是空的。

但 Peter Mortensen 的解决方案奏效了:

$(this).find("option:selected").text();

我不知道为什么通常的方式没有成功.each()(可能是我自己的错误),但谢谢你,彼得。我知道这不是最初的问题,但我提到它是“针对通过 Google 来的新手”。

$('#list option:selected").each()除了我还需要从 select 元素中抓取东西之外,我本来会开始的。

于 2011-05-26T19:04:13.223 回答
9

采用:

function selected_state(){
    jQuery("#list option").each(function(){
        if(jQuery(this).val() == "2"){
            jQuery(this).attr("selected","selected");
            return false;
        }
    });
}

jQuery(document).ready(function(){
    selected_state();
});
于 2011-07-11T23:53:18.750 回答
5

我正在寻找通过内部字段名称而不是 ID 获取 val 并从谷歌来到这篇文章,这有助于但没有找到我需要的解决方案,但我得到了解决方案,它是:

因此,这可能会帮助某人使用字段内部名称查找选定值,而不是对 SharePoint 列表使用长 id:

var e = $('select[title="IntenalFieldName"] option:selected').text(); 
于 2013-11-05T21:57:29.253 回答
5

提示:如果您的值是动态的,您可以使用以下代码:

$("#list option[value='"+aDynamicValue+"']").text();

或者(更好的风格)

$("#list option").filter(function() {
     return this.value === aDynamicValue;
}).text();

jQuery 中所述,获取特定的选项标签文本并将动态变量设置为值

于 2015-03-09T05:43:12.080 回答
4

我在处理动态转换对象时需要这个答案,而这里的其他方法似乎不起作用:

element.options[element.selectedIndex].text

这当然使用DOM对象,而不是使用 nodeValue、childNodes 等来解析其 HTML。

于 2013-02-12T15:36:08.050 回答
3

作为替代解决方案,您还可以使用jQuery 选择器的上下文部分在下拉列表中查找<option>元素:value="2"

$("option[value='2']", "#list").text();
于 2013-01-20T14:57:54.380 回答
2

我想要一个用于选择多个的动态版本,它将显示右侧选择的内容(希望我能继续阅读并看到$(this).find......早些):

<script type="text/javascript">
    $(document).ready(function(){
        $("select[showChoices]").each(function(){
            $(this).after("<span id='spn"+$(this).attr('id')+"' style='border:1px solid black;width:100px;float:left;white-space:nowrap;'>&nbsp;</span>");
            doShowSelected($(this).attr('id'));//shows initial selections
        }).change(function(){
            doShowSelected($(this).attr('id'));//as user makes new selections
        });
    });
    function doShowSelected(inId){
        var aryVals=$("#"+inId).val();
        var selText="";
        for(var i=0; i<aryVals.length; i++){
            var o="#"+inId+" option[value='"+aryVals[i]+"']";
            selText+=$(o).text()+"<br>";
        }
        $("#spn"+inId).html(selText);
    }
</script>
<select style="float:left;" multiple="true" id="mySelect" name="mySelect" showChoices="true">
    <option selected="selected" value=1>opt 1</option>
    <option selected="selected" value=2>opt 2</option>
    <option value=3>opt 3</option>
    <option value=4>opt 4</option>
</select>
于 2012-01-03T21:04:03.537 回答
2

您可以获得以下方式之一

$("#list").find('option').filter('[value=2]').text()

$("#list").find('option[value=2]').text()

$("#list").children('option[value=2]').text()

$("#list option[value='2']").text()

$(function(){    
    
    console.log($("#list").find('option').filter('[value=2]').text());
    console.log($("#list").find('option[value=2]').text());
    console.log($("#list").children('option[value=2]').text());
    console.log($("#list option[value='2']").text());
    
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

于 2018-05-08T09:57:02.383 回答
1

试试这个:

jQuery("#list option[value='2']").text()
于 2020-10-21T14:22:26.287 回答
0

尝试

[...list.options].find(o=> o.value=='2').text

let text = [...list.options].find(o=> o.value=='2').text;

console.log(text);
<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

于 2020-08-20T14:23:19.213 回答