ChatGPT解决这个技术问题 Extra ChatGPT

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

好吧,说我有这个:

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

A
ArtOfWarfare

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

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

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

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

要获取值而不是文本,您需要编写:- $("select#list").val();我知道这不是所提问题的实际答案,但仍然想为通过 Google 来的新手提及这一点。
我使用 $("#list option:selected").text() 和 $("#list option:selected").attr('value')
对于获取选定的文本(即使问题没有特别要求),由于不必知道选定的值是什么,这种方法是优越的。
A
Arsen Khachaturyan

它正在寻找一个 ID 为 list 且其属性 value 等于 2 的元素。
您想要的是 listoption 子元素:

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

谢谢你的这个昵称。如果您想动态获取值,这是扩展的答案: var selectValue = document.getElementById('list').value; var selectOption = $("#list option[value=" + selectValue + "]").text(); ///很好的例子 nickf.
@Kevin,在这种情况下,您可能想使用下面的答案。 $('#list option:selected').text()
@nickf,更简单,$('#list').val()
@Derek ,val() 不会给出选项的文本,它会给出它的值,在某些情况下(我敢说很多)是不一样的。
您应该始终在 .text() 之后使用 .trim(),因为某些浏览器有时可能会在用户看不到的文本前后添加一些空格,但可能会导致获取错误的值 $("#list option[value='2']").text().trim()
P
Paul Vargas

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

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

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

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

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

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


据说这是根据 WebStorm 8 更有效的方法。
虽然这个答案很有见地并帮助我解决了我遇到的问题,但它并没有正确回答这个问题:请注意,这不是询问如何获取选定的文本值,而是询问其中任何一个,无论是否被选中与否,取决于 value 属性。
P
Peter Mortensen

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

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

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


另一种方法是: $("option:selected", this).text()
这是一个更好的答案,因为它考虑了复杂的场景,而不仅仅是静态 html 和简单的 javascript 事件。
S
Shawn Chin
$("#list option:selected").each(function() {
   alert($(this).text());
});  

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


W
Wesley Smith

如果页面上只有一个 select 标签,那么您可以在 id 'list' jQuery("select option[value=2]").text(); 中指定 select获取选定的文本 jQuery("select option:selected").text();


A
Andrew Moore

尝试以下操作:

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

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


S
Shaunak D

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

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

我希望这有帮助 :-)


这绝对不正确请注意,这不是询问如何获取选定的文本值
P
Peter Mortensen

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

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

A
Avinash Saini
$(this).children(":selected").text()

不幸的是,当您将 optgroup 标记为 select 的子项并且所选选项在此 optgroup 中时,这不起作用。使用即使在这种情况下也有效的 $("#list option:selected").text();
C
Chaitanya K

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

你可以这样调用函数:

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

B
Bill the Lizard
$("#list [value='2']").text();

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


e
eon

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

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

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

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

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


V
Vickysw

利用:

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

jQuery(document).ready(function(){
    selected_state();
});

F
FAA

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

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

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

实在的方法。抱歉,这里这么隐秘的地方。您可能希望找到一个更突出的位置来提供此解决方案。也许您可以提出并回答您自己的问题?
C
Community

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

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


P
Peter Mortensen

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

element.options[element.selectedIndex].text

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


V
VisioN

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

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

P
Peter Mortensen

我想要一个用于选择多个的动态版本,它将显示右侧选择的内容(希望我能继续阅读并看到 $(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>

A
Anfath Hifans

您可以获得以下方式之一

$("#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()); 控制台.log($("#list option[value='2']").text()); });


Z
Zakaria Binsaifullah

尝试这个:

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

K
Kamil Kiełczewski

尝试

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

让 text = [...list.options].find(o=> o.value=='2').text;控制台.log(文本);