2017-09-22 40 views
2
<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

在這裏,你去了一個解決方案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'); 

希望這會對你有幫助。

+0

它的作品,非常感謝。 – puerto

+0

@puerto歡迎好友:) – Shiladitya

2

text不是屬性。使用:contains來搜索元素的文本內容。

$("#selbauth option:contains(abc)").prop('selected', true); 

另見.prop() vs .attr()爲什麼我用.prop代替.attr

你的第二個代碼不工作的原因是因爲dd是一個jQuery對象,而不是DOM元素。如果你寫了,它會奏效。

selbytext($('#selbauth').get(0), 'lorem'); 
+0

'.prop()'更好。+ 1 –

1

可以使用contains實現這一目標:

$(document).ready(function(){ 
 
var selectText = 'Audi'; 
 
    $('#test option:contains('+selectText+')').attr('selected','selected'); 
 
});
<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>

1

可以使用含有作爲@Shiladitya告訴你,如果你要搜索的文本不能是另一個選項的子串。如果您需要完全匹配,您可以使用過濾器...

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

我希望它能幫助