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

但它不起作用。

1090712 次浏览

它正在寻找一个idlist的元素,它的属性value等于2
你想要的是listoption孩子:

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

尝试以下操作:

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

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

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

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

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

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

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

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

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

我想获得选定的标签。这在jQuery 1.5.1中为我工作。

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

基于Paolo发布的原始超文本标记语言,我想出了以下内容。

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

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

当通过动态创建的选择元素“循环”时,使用. each(函数()…):$("option:selected").text();$(this + " option:selected").text()没有返回选定的选项文本-相反,它是null。

彼得·莫特森的解决方案奏效了:

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

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

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

用途:

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

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

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

正如其中一条评论中提到的。有了这个,我能够创建一个动态函数,该函数适用于我所有的选择框,我想同时获得值、选项值和文本。

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

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

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

我想要一个选择多个的动态版本,可以显示右侧选择的内容(希望我继续阅读并看到$(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>
  1. 如果页面上只有一个选择标签,那么您可以在id'list'中指定选择

    jQuery("select option[value=2]").text();
  2. To get selected text

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

作为替代解决方案,您还可以使用jQuery选择器的上下文部分在下拉列表中找到value="2"<option>元素:

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

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

element.options[element.selectedIndex].text

这当然使用DOM对象,而不是用nodeValue、子节点等解析其超文本标记语言。

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

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

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

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

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

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

我希望这有助于:-)

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

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

(更好的风格)

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

如上所述jQuery获取特定选项标记文本并将动态变量放置到值

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

你可以像这样调用函数:

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

您可以通过以下方式之一

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

试试看

[...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>

试试这个:

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