因此,我正在編寫一個需要地址輸入的應用程序,並且我有一個select
元素供用戶選擇州/省。它需要支持US
和Canada
,所以它嵌套optgroups
以將它們與單個第一級選項分開,因爲它是默認值。這是一個基本的例子:jQuery - 使用值或嵌套在optgroups中的選項設置選擇框的選定選項
<select name="state" id="state">
<option class="co" value="" data-placeholder="true" disabled selected>Choose your state...</option>
<optgroup label="United States">
<option class="co" value="AL">Alabama</option>
<option class="co" value="AK">Alaska</option>
<option class="co" value="AZ">Arizona</option>
</optgroup>
<optgroup label="Canada">
<option class="co" value="AB">Alberta</option>
<option class="co" value="BC">British Columbia</option>
<option class="co" value="MB">Manitoba</option>
</optgroup>
現在我需要以編程方式選擇從外部源相匹配輸入的選項,我要檢查的基礎上,選擇元件的兩個值或匹配其文本。然後將選擇哪個選項作爲選擇的選項。我知道你可以使用
$("#state").val(myValue)
設置的值選定的選項,我知道你可以用這種方式設定基於文本的選項
var myText = "The state I want.";
$("#state").children().filter(function() {
return $(this).text() == myText;
}).prop('selected', true);
有沒有乾淨的方式來做到這一點,而不必貫穿每個孩子並檢查它是否是一個選擇組,然後通過其所有孩子檢查比賽?有沒有一種簡單的方法通過jQuery來結合設置選定選項的值和文本方法?
另外一個複雜的問題,我將在外部jQuery插件中執行此操作。在函數我需要修改我有選擇的元素作爲變量
$element
,所以我需要一種方法來做到這一點有點像這樣如果可能的話:
$element.descendents(":option").filter(function() {
//do the selecting here
}).prop('selected', true);
也許使用jquery的has()類。 http://api.jquery.com/has/ – Charles380
'$('#state option')。filter(function(){return $(this).text()=== mytext;})。prop('selected ',是);'? – vsr
另外一個問題,我在jQuery插件中這樣做,以便函數接收select元素作爲參數。我將此添加到問題的底部。 – climbak