通过包含文本选择选项

时间:2017-09-22 06:01:36

标签: jquery drop-down-menu

<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

任何帮助?

4 个答案:

答案 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来实现此目的:

&#13;
&#13;
$(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;
&#13;
&#13;

答案 3 :(得分:0)

您可以使用包含@Shiladitya显示您正在搜索的文本是否可以是其他选项的子字符串。如果您需要完全匹配,可以使用过滤器...

$('#selbauth option').filter(function () {
    return $(this).html() == "lorem"; 
}).attr('selected','selected');

我希望它有所帮助