我需要检查a <select>
是否具有其文本等于特定值的选项。
例如,如果有<option value="123">abc</option>
,我会寻找“ abc”。
有选择器可以做到这一点吗?
我正在寻找与$('#select option[value="123"]');
文字类似的东西。
我需要检查a <select>
是否具有其文本等于特定值的选项。
例如,如果有<option value="123">abc</option>
,我会寻找“ abc”。
有选择器可以做到这一点吗?
我正在寻找与$('#select option[value="123"]');
文字类似的东西。
Answers:
这可以帮助:
$('#test').find('option[text="B"]').val();
这将为您提供带有文本的选项,B
而不是包含的文本选项B
。希望这可以帮助
对于最新版本的jQuery,上述操作无效。如下面的Quandary所述,这是适用于jQuery 1.9.1的功能:
$('#test option').filter(function () { return $(this).html() == "B"; }).val();
您可以使用 :contains()
选择器选择包含特定文本的元素。
例如:
$('#mySelect option:contains(abc)')
检查是否给定 <select>
元素具有这样的选项,请使用.has()
方法:
if (mySelect.has('option:contains(abc)').length)
要查找<select>
包含此类选项的所有,请使用:has()
选择器:
$('select:has(option:contains(abc))')
:contains
现在不是确定的,是吗?
123abcdef
吗?
在jQuery 1.7.2中,先前的建议对我都不起作用,因为我试图根据文本框中的值设置列表的选定索引,并且某些文本值包含在多个选项中。我最终使用以下内容:
$('#mySelect option:contains(' + value + ')').each(function(){
if ($(this).text() == value) {
$(this).attr('selected', 'selected');
return false;
}
return true;
});
contains
完全省去实际上可能会加快速度。
$(this).parent().val($(this).val());
您可能可以同时执行这两个操作,但对我来说,仅设置父级val()
就可以了。
我在下面遇到相同的问题是工作代码:
$("#test option").filter(function() {
return $(this).text() =='Ford';
}).prop("selected", true);
这为我工作: $("#test").find("option:contains('abc')");
$("#testselect").find("option:contains('option-text')").attr('value');
这样,您可以使用类似.click()
更改设置的事件。
我尝试了其中的一些方法,直到可以同时在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 ) );
"#my-Select" + " option"
?为什么不只是"#my-Select option"
呢?
使用以下
$('#select option:contains(ABC)').val();
这对我有用
$('#mySelect option:contains(' + value + ')').attr('selected', 'selected');
这对我有用:
var result = $('#SubjectID option')
.filter(function ()
{ return $(this).html() == "English"; }).val();
该result
变量将返回匹配文本值的索引。现在,我将使用它的索引进行设置:
$('#SubjectID').val(result);
这也将起作用。
$('#test')。find(“ select option:contains('B')”)。filter(“:selected”);
ABC
。
正如描述的这个答案,你可以轻松地创建自己的hasText选择。这使您可以找到带有$('#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;
};
}
has
在SLaks答案中很有用,但在Floyds答案中也很重要...我不知道该接受什么。