jQuery获取特定的选项标签文本


1234

好吧,说我有这个:

<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();

但这是行不通的。


在此时间段内,请使用:$("#list option").filter(function () { return $(this).html() == "stuff"; }).val();
rook

Answers:


1122

它正在寻找ID list为且属性value等于的元素2
您想要的是的option孩子list

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

4
谢谢您的昵称。如果要动态获取值,可以使用以下扩展的答案:var selectValue = document.getElementById('list')。value; var selectOption = $(“#list option [value =” + selectValue +“]”)。text(); ///好例子尼克。
凯文·佛罗里达

283
@Kevin,在这种情况下,您可能要使用下面的答案。$('#list option:selected').text()
nickf

6
@nickf,更简单,$('#list').val()
Derek朕会功夫

36
@Derek,val()不会给出该选项的文本,它将给出其值,在某些情况下(我敢说),该值是不相同的。
itsmequinn

您应该始终使用.trim()after,.text()因为某些浏览器有时可能在用户看不见的文本前后添加一些空格,但可能会导致获取错误的值$("#list option[value='2']").text().trim()
Hassan ALAMI

1262

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

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

如果要获取当前选择的任何一个选项,请使用

$("#list option:selected").text();

11
要获取值而不是文本,您将需要编写:-$(“ select#list”)。val(); 我知道这不是所提问题的实际答案,但仍然想到要为通过Google的新手提及这一点。
知识渴求2010年

我使用$(“#list选项:selected”)。text()和$(“#list选项:selected”)。attr('value')
fullstacklife 2011年

对于获取选定的文本(即使问题并没有特别要求),由于不必知道选定的值是什么,因此此方法是优越的。
theJerm 2012年

132

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

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

如评论之一所述。这样,我可以创建一个动态函数,该函数可以与我希望同时获得值,选项值和文本的所有选择框一起使用。

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

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

那是我的解决方案...仅当更新jQuery后遇到任何问题时才使用它。


2
据说这是更有效的方式根据WebStorm 8.做
dbinott

2
尽管此答案很有见地,可以帮助我解决我遇到的一个问题,但它不能正确回答以下问题:请注意,这并不是在询问如何获取选定的文本值,而是询问其中的任何一个(是否选定)是否使用,取决于value属性。
StubbornShowaGuy's

109

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

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

经过测试,可以在Internet Explorer和Firefox上使用。


11
替代方法是:$(“ option:selected”,this).text()
Doug S

这是一个更好的答案,因为它解决了复杂的情况,而不仅仅是静态html和简单的javascript事件。
oasisfleeting,2015年

37
$("#list option:selected").each(function() {
   alert($(this).text());
});  

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


37
  1. 如果页面上只有一个选择标记,则可以在ID“列表”中指定选择

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

    jQuery("select option:selected").text();

24

尝试以下方法:

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

原始代码段无法正常运行的原因是,您的OPTION代码是代码的子SELECT代码,该代码带有id list


19

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

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

我希望这有帮助 :-)


这绝对是不正确的,请注意,这并不是在询问如何获取选定的文本值
Wesley Smith

17

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

$("#list :selected").text();

17
$(this).children(":selected").text()

不幸的是,当您将optgrouptag标记为您的孩子select并且选择的选项在this中时,此方法不起作用optgroup。使用$("#list option:selected").text();即使在这种情况下
仍然有效

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

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


13

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

您可以这样调用函数:

jQuery("select option:selected").text();

10

在使用.each(function()...)通过动态创建的select元素“循环”时$("option:selected").text();$(this + " option:selected").text()没有返回所选的选项文本-而是为null。

但是Peter Mortensen的解决方案有效:

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

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

$('#list option:selected").each()除了需要从select元素中获取内容外,我本来会开始。


8

采用:

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();
});

5

我一直在寻找通过内部字段名称而不是ID来获取val的方法,并且从google到这则帖子中找到了帮助,但没有找到我需要的解决方案,但是我找到了解决方案,这里是:

因此,这可能有助于某人使用字段内部名称来查找所选值,而不是对SharePoint列表使用长ID:

var e = $('select[title="IntenalFieldName"] option:selected').text(); 

实在的方法。抱歉,它在这里这么秘密的地方。您可能想找到一个更重要的地方来提供此解决方案。也许您可以问和回答自己的问题?
Andrew Kozak 2013年




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>

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>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.