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

时间:2008-10-13 04:06:35

标签: javascript jquery drop-down-menu jquery-selectors

好吧,说我有这个:

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

但它没有用。

22 个答案:

答案 0 :(得分:1254)

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

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

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

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

答案 1 :(得分:1092)

它正在寻找标识为list且元素value等于2的元素。您想要的是option的{​​{1}}子元素。

list

答案 2 :(得分:124)

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

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

正如其中一条评论所述。有了这个,我就能够创建一个动态函数,它可以处理我想要获取值,选项值和文本的所有选择框。

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

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

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

答案 3 :(得分:107)

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

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

它已经过测试,适用于Internet Explorer和Firefox。

答案 4 :(得分:36)

  1. 如果页面上只有一个选择标记,则可以在id'list'中指定select

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

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

答案 5 :(得分:36)

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

表示#list元素中的多个选定值。

答案 6 :(得分:23)

尝试以下方法:

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

原始代码段不起作用的原因是因为OPTION代码是SELECT代码的子代,其id list

答案 7 :(得分:19)

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

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

我希望这会有所帮助: - )

答案 8 :(得分:17)

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

答案 9 :(得分:16)

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

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

答案 10 :(得分:13)

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

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

答案 11 :(得分:13)

您可以使用函数.text();

获取所选的选项文本

你可以这样调用这个函数:

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

答案 12 :(得分:10)

通过动态创建的带有.each(function()...)的select元素“循环”:$("option:selected").text();$(this + " option:selected").text()没有返回选定的选项文本 - 而是返回null。 / p>

但Peter Mortensen的解决方案有效:

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

我不知道为什么通常的方法在.each()(可能是我自己的错误)中没有成功,但谢谢你,彼得。我知道这不是原来的问题,但我提到它“是为了通过谷歌来做新手。”

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

答案 13 :(得分: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();
});

答案 14 :(得分:5)

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

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

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

答案 15 :(得分:4)

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

element.options[element.selectedIndex].text

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

答案 16 :(得分:4)

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

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

或(更好的风格)

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

正如jQuery get specific option tag text and placing dynamic variable to the value

中所述

答案 17 :(得分:3)

作为替代解决方案,您还可以使用context part of jQuery selector在下拉列表中查找<option> value="2"个元素:

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

答案 18 :(得分:1)

您可以通过以下方式之一

$("#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>

答案 19 :(得分:0)

如果要获取选定的值,则:

        <section id="global">
  
                <div class="anim">
              
                  <div id="top" class="mask">
                    <div class="plane"></div>
                  </div>
                  
                   <div id="middle-top" class="mask">
                    <div class="plane"></div>
                  </div>
                  
                  <div id="middle" class="mask">
                    <div class="plane"></div>
                  </div>
                                
                  <div id="bottom" class="mask">
                    <div class="plane"></div>
                  </div>
                  
                   
                </div>
                  
                <p id="loading-texte"><i>LOADING...</i></p>
                  
              </section>

答案 20 :(得分: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>

答案 21 :(得分:0)

尝试一下:

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