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

好的,说我有这个:

<select id='list'> <option value='1'>Option A</option> <option value='2'>Option B</option> <option value='3'>Option C</option> </select> 

如果我想得到“选项B”,当我有值“2”时,select器会是什么样子?

请注意,这不是要求如何获得选定的文本值,而只是其中的任何一个,无论是否select,取决于value属性。 我试过了:

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

但它不工作。

它正在寻找具有属性value等于2的ID list的元素。你想要的是listoption子。

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

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

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

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

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

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

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

它已经过testing,可用于Internet Explorer和Firefox。

这对我来说非常合适,我一直在寻找一种方式来发送两个不同的值,这些值是由MySQL生成的选项,下面是通用和dynamic的:

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

正如其中一条评论所述。 有了这个,我能够创build一个dynamic的函数,与我想要获得值,选项值和文本的所有select框一起工作。

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

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

这是我的解决scheme…只有当您更新您的jQuery后有任何问题才使用它。

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

#list元素中select多个值。

  1. 如果在页面上只有一个select标签,那么你可以指定select内部id'列表'

     jQuery("select option[value=2]").text(); 
  2. 获取选定的文本

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

尝试以下操作:

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

您的原始代码片段不工作的原因是因为您的OPTION标签是您的SELECT标签(具有id list子代。

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

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

我希望这有帮助 :-)

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

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

IDselect器后留下一个空格。

使用.each(function()…)通过dynamic创build的select元素“循环”: $("option:selected").text();$(this + " option:selected").text()没有返回选中的选项文本 – 而是返回null。

但彼得·莫滕森的解决scheme工作:

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

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

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

您可以通过使用函数.text();来获得选定的选项文本.text();

你可以这样调用函数:

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

使用:

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

我正在寻找val内部字段名称而不是ID,并从谷歌来到这个post,帮助,但没有find我需要的解决scheme,但我得到的解决scheme,在这里是这样的:

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

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

我需要这个答案,因为我正在处理一个dynamic的对象,其他方法似乎并没有工作:

 element.options[element.selectedIndex].text 

这当然使用DOM对象,而不是使用nodeValue,childNodes等来parsing它的HTML。

作为替代scheme,您还可以使用jQueryselect器的上下文部分在下拉列表中findvalue="2" <option>元素:

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

提示:如果你的值是dynamic的,你可以使用下面的代码:

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

或者(更好的风格)

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

正如在jQuery中提到的, 获取特定的选项标签文本并将dynamicvariables放置到值中

我想要一个dynamic版本的select多个将显示什么被选中的权利(希望我读过,看到$(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>