<select class='selb' id='selbauth' >
这有效:
$('#selbauth option[value="abc"]').attr('selected','selected');
相同但不是按值而是按文本选择 - 不起作用:
$('#selbauth option[text="lorem"]').attr('selected','selected');
我尝试了另一种方式:
function selbytext(dd, txt){
for (var i = 0; i < dd.options.length; i++) {
if (dd.options[i].text == txt) {
dd.selectedIndex = i;
break;
}
}}
selbytext($('#selbauth'), 'lorem');
错误:
Cannot read property 'length' of undefined
任何帮助?
答案 0 :(得分:3)
您可以使用解决方案https://jsfiddle.net/5rc49waj/
$('#selbauth option:contains("abc")').attr('selected','selected');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class='selb' id='selbauth' >
<option>Test 1</option>
<option>abc</option>
</select>
我使用了jQuery contains
。
参考文档: https://api.jquery.com/jQuery.contains/
如果您使用的jQuery版本大于1.6,请使用prop
代替`attr。
$('#selbauth option:contains("abc")').prop('selected','selected');
希望这会对你有所帮助。
答案 1 :(得分:1)
text
不是属性。使用:contains
搜索元素的文本内容。
$("#selbauth option:contains(abc)").prop('selected', true);
另请参阅.prop() vs .attr()了解我使用.prop
代替.attr
的原因。
你的第二个代码不起作用的原因是因为dd
是一个jQuery对象,而不是一个DOM元素。如果你写的话会有用。
selbytext($('#selbauth').get(0), 'lorem');
答案 2 :(得分:0)
您可以使用contains
来实现此目的:
$(document).ready(function(){
var selectText = 'Audi';
$('#test option:contains('+selectText+')').attr('selected','selected');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='test'>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
&#13;
答案 3 :(得分:0)
您可以使用包含@Shiladitya显示您正在搜索的文本是否可以是其他选项的子字符串。如果您需要完全匹配,可以使用过滤器...
$('#selbauth option').filter(function () {
return $(this).html() == "lorem";
}).attr('selected','selected');
我希望它有所帮助