jQuery的:如何select一个选项的文本?
我需要检查一个select是否有一个选项的文本是一个特定的值。
例如<option value="123">abc</option>
我会寻找abc。
有没有一个select器来做到这一点?
我正在寻找类似于$('#select option[value="123"]');
但为文本
这可能有助于:
$('#test').find('option[text="B"]').val();
演示 – http://jsfiddle.net/nmvf6/1/
这会给你带有文本B
的选项,而不是带有包含B
文本的选项。 希望这可以帮助
编辑:
对于jQuery的最新版本,上述不起作用。 正如下面的Quandary所评论的,这对于jQuery 1.9.1是有效的:
$('#test option').filter(function () { return $(this).html() == "B"; }).val();
更新小提琴
您可以使用:contains()
select器来select包含特定文本的元素。
例如:
$('#mySelect option:contains(abc)')
要检查给定的<select>
元素是否有这样的选项,请使用.has()
方法 :
if (mySelect.has('option:contains(abc)').length)
要find包含这样一个选项的所有<select>
,使用:has()
select器 :
$('select:has(option:contains(abc))')
以前的build议没有在jQuery 1.7.2中为我工作,因为我试图根据文本框中的值设置列表的选定索引,一些文本值包含在多个选项中。 我结束了使用以下内容:
$('#mySelect option:contains(' + value + ')').each(function(){ if ($(this).text() == value) { $(this).attr('selected', 'selected'); return false; } return true; });
这对我有效: $("#test").find("option:contains('abc')");
这是在下拉列表中select文本的最佳方法。
$("#dropdownid option:contains(your selected text)").attr('selected', true);
我尝试了一些这些东西,直到我有一个在Firefox和IE工作。 这是我想出来的。
$("#my-Select").val($("#my-Select" + " option").filter(function() { return this.text == myText }).val());
另一种更可读的方式来写它:
var valofText = $("#my-Select" + " option").filter(function() { return this.text == myText }).val(); $(ElementID).val(valofText);
伪代码:
$("#my-Select").val( getValOfText( myText ) );
我在下面遇到同样的问题是工作代码:
$("#test option").filter(function() { return $(this).text() =='Ford'; }).prop("selected", true);
演示: http : //jsfiddle.net/YRBrp/83/
这将工作在jQuery 1.6(注意在前括号之前的冒号),但在新版本(当时的1.10)上失败。
$('#mySelect option:[text=abc]")
使用以下
$('#select option:contains(ABC)').val();
下面的jQuery版本1.10.2为我工作
var selectedText="YourMatchText"; $('#YourDropdownId option').map(function () { if ($(this).text() == selectedText) return this; }).attr('selected', 'selected'); });
您可以遍历选项,也可以将相同的文本放入选项的另一个属性中,然后使用该选项进行select。
这也将起作用。
$('#test')。find(“select option:contains('B')”)。filter(“:selected”);
正如在这个答案中所描述的,你可以很容易地为hasText创build你自己的select器。 这允许你用$('#test').find('option:hastText("B")').val();
这里是我添加的hasText方法:
if( ! $.expr[':']['hasText'] ) { $.expr[':']['hasText'] = function( node, index, props ) { var retVal = false; // Verify single text child node with matching text if( node.nodeType == 1 && node.childNodes.length == 1 ) { var childNode = node.childNodes[0]; retVal = childNode.nodeType == 3 && childNode.nodeValue === props[3]; } return retVal; }; }
这是我的答案
var options = $(dropdown).find('option'); var targetOption = $(options).filter( function () { return $(this).html() == value; }); if(targetOption) { $(options).removeAttr("selected"); $(dropdown).val($(targetOption).val()) }
感谢所有的职位。
对于jQuery 3:
$("#myDiv select").val("text");