首页 文章

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

提问于
浏览
1160

好吧,说我有这个:

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

但它没有用 .

20 回答

  • 2
    $(this).children(":selected").text()
    
  • 4

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

    $(this).find(“option:selected”) . text();

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

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

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

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

  • 4

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

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

    而"looping"通过动态创建的选择元素与.each(function()...):_ $("option:selected").text();$(this + " option:selected").text() 没有返回选定的选项文本 - 而是返回null .

    但Peter Mortensen的解决方案有效:

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

    我不知道为什么通常的方式在 .each() (可能是我自己的错误)中没有成功,但谢谢你,彼得 . 我知道这不是原来的问题,但我提到了它"for newbies coming through Google."

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

  • 5

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

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

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

    $("#list option:selected").text();
    
  • 3
    • 如果页面上只有一个选择标记,则可以在id'list'中指定select
    jQuery("select option[value=2]").text();
    
    • 获取所选文本
    jQuery("select option:selected").text();
    
  • 13

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

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

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

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

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

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

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

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

  • 17

    使用:

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

    您可以通过以下方式之一获得

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

    请尝试以下方法:

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

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

  • 107

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

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

    我希望这有帮助 :-)

  • 16

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

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

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

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

  • 10

    我想要一个选择倍数的动态版本,它会显示正确选择的内容(希望我阅读并看到 $(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>
    
  • 0

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

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

    jQuery("select option:selected").text();
    
  • 120
    $("#list [value='2']").text();
    

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

  • 1251

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

    element.options[element.selectedIndex].text
    

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

  • 1070

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

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

相关问题