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

Pao*_*ino 1211 javascript jquery jquery-selectors drop-down-menu

好吧,说我有这个:

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>
Run Code Online (Sandbox Code Playgroud)

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

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

$("#list[value='2']").text();
Run Code Online (Sandbox Code Playgroud)

但它没有用.

小智 1258

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

$("#list option[value='2']").text();
Run Code Online (Sandbox Code Playgroud)

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

$("#list option:selected").text();
Run Code Online (Sandbox Code Playgroud)

  • 要获取值而不是文本,您需要编写: - $("select#list").val(); 我知道这不是问题的实际答案,但仍然想到通过谷歌提出新手的这一点. (11认同)

nic*_*ckf 1109

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

$("#list option[value='2']").text()
Run Code Online (Sandbox Code Playgroud)

  • @Kevin,在这种情况下,你可能想要使用下面这个答案.`$('#list option:selected').text()` (283认同)
  • @Derek,val()不会给出选项的文本,它会给出它的值,这在某些情况下(很多我敢说)是不一样的. (36认同)
  • @nickf,更简单,`$('#list').val()` (6认同)
  • 谢谢你的昵称.如果要动态获取值,可以扩展此答案:var selectValue = document.getElementById('list').value; var selectOption = $("#list option [value ="+ selectValue +"]").text(); ///好示例nickf. (4认同)

rap*_*hie 128

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

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

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

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

$(this).find(":selected").text();
Run Code Online (Sandbox Code Playgroud)

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

  • 根据WebStorm 8,据说这是更有效的方法. (2认同)
  • 虽然这个答案是有洞察力的并且帮助我解决了我遇到的问题,但是它并没有正确地回答这个问题:_请注意,这不是询问如何获取所选的文本值,而是选择其中任何一个,无论选择或不,取决于值属性._ (2认同)

asy*_*qin 109

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

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

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

  • 另一种方法是:$("option:selected",this).text() (11认同)

Bee*_*tty 37

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

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

    jQuery("select option:selected").text();
    
    Run Code Online (Sandbox Code Playgroud)


小智 36

$("#list option:selected").each(function() {
   alert($(this).text());
});  
Run Code Online (Sandbox Code Playgroud)

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


And*_*ore 23

请尝试以下方法:

$("#list option[value=2]").text();
Run Code Online (Sandbox Code Playgroud)

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


小智 19

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

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

我希望这有帮助 :-)


小智 17

$(this).children(":selected").text()
Run Code Online (Sandbox Code Playgroud)


Dil*_*tha 16

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

$("#list :selected").text();
Run Code Online (Sandbox Code Playgroud)


小智 13

$("#list [value='2']").text();
Run Code Online (Sandbox Code Playgroud)

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


小智 13

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

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

jQuery("select option:selected").text();
Run Code Online (Sandbox Code Playgroud)


eon*_*eon 10

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

但Peter Mortensen的解决方案有效:

$(this).find("option:selected").text();
Run Code Online (Sandbox Code Playgroud)

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

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


Mar*_*hez 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();
});
Run Code Online (Sandbox Code Playgroud)


FAA*_*FAA 5

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

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

var e = $('select[title="IntenalFieldName"] option:selected').text(); 
Run Code Online (Sandbox Code Playgroud)


Ali*_*ahi 5

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

$("#list option[value='"+aDynamicValue+"']").text();
Run Code Online (Sandbox Code Playgroud)

或者(更好的风格)

$("#list option").filter(function() {
     return this.value === aDynamicValue;
}).text();
Run Code Online (Sandbox Code Playgroud)

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