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