我需要检查<select>
是否有一个文本等于特定值的选项。
例如,如果有<option value="123">abc</option>
,我会寻找“abc”。
是否有选择器来执行此操作?
我正在寻找与$('#select option[value="123"]');
类似的内容,但文字。
答案 0 :(得分:297)
这可能有所帮助:
$('#test').find('option[text="B"]').val();
这会为您提供包含文字B
的选项,而不包含包含B
文字的选项。希望这有帮助
对于jQuery的最新版本,上面的内容不起作用。如下面Quandary所述,这适用于jQuery 1.9.1:
$('#test option').filter(function () { return $(this).html() == "B"; }).val();
答案 1 :(得分:126)
您可以使用:contains()
selector选择包含特定文字的元素
例如:
$('#mySelect option:contains(abc)')
要检查给定<select>
元素是否具有此选项,请使用.has()
method:
if (mySelect.has('option:contains(abc)').length)
要查找包含此类选项的所有<select>
,请使用:has()
selector:
$('select:has(option:contains(abc))')
答案 2 :(得分:30)
以前的建议都没有在jQuery 1.7.2中为我工作,因为我试图根据文本框中的值设置列表的选定索引,并且一些文本值包含在多个选项中。我最终使用了以下内容:
$('#mySelect option:contains(' + value + ')').each(function(){
if ($(this).text() == value) {
$(this).attr('selected', 'selected');
return false;
}
return true;
});
答案 3 :(得分:16)
答案 4 :(得分:13)
这对我有用:$("#test").find("option:contains('abc')");
答案 5 :(得分:11)
这是下拉列表中选择文字的最佳方法。
$("#dropdownid option:contains(your selected text)").attr('selected', true);
答案 6 :(得分:4)
我尝试了其中的一些内容,直到我找到了一个在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 ) );
答案 7 :(得分:3)
使用以下
$('#select option:contains(ABC)').val();
答案 8 :(得分:1)
这将在jQuery 1.6中工作(在开始括号前注释冒号),但在较新的版本(当时为1.10)上失败。
$('#mySelect option:[text=abc]")
答案 9 :(得分:1)
对于jquery版本1.10.2,下面为我工作
var selectedText="YourMatchText";
$('#YourDropdownId option').map(function () {
if ($(this).text() == selectedText) return this;
}).attr('selected', 'selected');
});
答案 10 :(得分:0)
使用 prop 代替 attr
$('#mySelect option:contains(' + value + ')').each(function(){
if ($(this).text() == value) {
$(this).prop('selected', 'selected');
return false;
}
return true;
});
答案 11 :(得分:0)
这对我有用:
var result = $('#SubjectID option')
.filter(function ()
{ return $(this).html() == "English"; }).val();
result
变量将返回匹配的文本值的索引。现在,我将使用它的索引进行设置:
$('#SubjectID').val(result);
答案 12 :(得分:0)
这项工作对我来说
$('#mySelect option:contains(' + value + ')').attr('selected', 'selected');
答案 13 :(得分:-1)
答案 14 :(得分:-1)
这也可以。
$(&#39; #test&#39;)。找到(&#34;选择选项:包含(&#39; B&#39;)&#34;)。过滤器(&#34;:已选择& #34);
答案 15 :(得分:-1)
您可以遍历这些选项,或者将相同的文本放在该选项的另一个属性中,然后选择该选项。
答案 16 :(得分:-2)
这对我有用
var options = $(dropdown).find('option');
var targetOption = $(options).filter(
function () { return $(this).html() == value; });
console.log($(targetOption).val());
感谢所有帖子。