jQuery获取特定的选项标签文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
但它没有用。
它正在寻找一个id为list
的元素,它的属性value
等于2.你想要的是option
的list
孩子。
$("#list option[value='2']").text()
我想获得所选标签。这在jQuery 1.5.1中对我有用。
$("#list :selected").text();
$("#list [value='2']").text();
在id选择器后面留一个空格。
您可以使用函数.text();
获取选定的选项文本
你可以像这样调用这个函数:
jQuery("select option:selected").text();
通过动态创建的选择元素“循环”使用.each(function()...):$("option:selected").text();
和$(this + " option:selected").text()
没有返回选定的选项文本 - 而是返回null。
但Peter Mortensen的解决方案有效:
$(this).find("option:selected").text();
我不知道为什么通常的方式在.each()
(可能是我自己的错误)中没有成功,但谢谢你,彼得。我知道这不是原来的问题,但我提到它“是为了通过谷歌来做新手”。
我会从$('#list option:selected").each()
开始,除了我需要从select元素中获取东西。
使用:
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();
});
我正在寻找通过内部字段名称而不是ID来获取val,并且从谷歌来到这篇帖子有帮助但没有找到我需要的解决方案,但我得到了解决方案,这里是:
因此,这可能有助于某人使用字段内部名称查找所选值,而不是使用SharePoint列表的长ID:
var e = $('select[title="IntenalFieldName"] option:selected').text();
当我处理动态转换对象时,我需要这个答案,而这里的其他方法似乎不起作用:
element.options[element.selectedIndex].text
这当然使用DOM对象,而不是使用nodeValue,childNodes等解析其html。
提示:如果您的值是动态的,您可以使用下面的代码:
$("#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中提到的那样
作为替代解决方案,您还可以使用context part of jQuery selector在下拉列表中找到<option>
的value="2"
元素:
$("option[value='2']", "#list").text();
我想要一个选择倍数的动态版本,它会显示正确选择的内容(希望我阅读并看到$(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;'> </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>
如果您想获得值为2的选项,请使用
$("#list option[value='2']").text();
如果您想获得当前选择的任何选项,请使用
$("#list 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 option:selected").text();
这对我来说非常合适,我正在寻找一种方法来发送两个不同的值与mysql生成的选项,以下是通用和动态的:
$(this).find("option:selected").text();
正如其中一条评论所述。有了这个,我就能够创建一个动态函数,它可以处理我想要获取值,选项值和文本的所有选择框。
几天前我注意到,当我使用这段代码从站点的1.6到1.9更新jQuery时,这个停止工作......可能与另一段代码发生冲突......无论如何,解决方案是从中移除选项find()调用:
$(this).find(":selected").text();
这是我的解决方案......只有在更新jQuery后遇到任何问题时才使用它。
根据Paolo发布的原始HTML,我想出了以下内容。
$("#list").change(function() {
alert($(this).find("option:selected").text()+' clicked!');
});
它已经过测试,适用于Internet Explorer和Firefox。
$("#list option:selected").each(function() {
alert($(this).text());
});
对于#list
元素中的多个选定值。
- 如果页面上只有一个选择标记,那么您可以在id'list'中指定select
jQuery("select option[value=2]").text();
- 获取所选文本
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!');
});
我希望这有帮助 :-)
$(this).children(":selected").text()
以上是关于jQuery获取特定的选项标签文本的主要内容,如果未能解决你的问题,请参考以下文章
如何在文本区域标签中的特定光标位置插入选择标签下拉值作为文本片段?