因此,我正在编写一个需要地址输入的应用程序,并且我有一个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