如何一次获得多个选项

时间:2011-03-24 14:25:35

标签: jquery jquery-ui jquery-selectors

假设我有一个下拉菜单:

<select id="color">
    <option value="white" selected="selected">White</option>
    <option value="black">Black</option>
    <option value="red">Red</option>
    <option value="green">Green</option>
    <option value="green">Transparent</option>
</select>

我知道在jQuery中我可以选择带有选项索引的选项:

$('#color option:eq(2)') //get 'red'

但是,有没有办法一次获得多个选项?我尝试了以下代码:

$('#color option:eq(2, 3)') //Try to get 'Red' and 'Green'

$('#color option:eq([2, 3])') //Try to get 'Red' and 'Green'

但是没有人工作,如何一次解决多种选择?

3 个答案:

答案 0 :(得分:2)

如果您想获得该集合的子集,可以使用.slice()

$("#color option").slice(2,3)

如果您想获得不同的元素,可以执行以下操作:

$("#color option").filter(":eq(2), :eq(4)");

jsfiddle上的代码示例。

答案 1 :(得分:0)

根据您的other question,您可能需要考虑将类添加到特定选项中。这不仅可以让你抓住多个,还可以提供一些上下文:

<select id="color">
    <option value="white" selected="selected" class="past">White</option>
    <option value="black" class="past">Black</option>
    <option value="red" class="future">Red</option>
    <option value="green" class="future">Green</option>
    <option value="green" class="mixed">Transparent</option>
</select>

然后,当你编写逻辑时,你可以做类似

的事情
$('option.future, option.multi').hide();
$('option.past').show();

答案 2 :(得分:0)

一旦选择了元素,就可以像对待任何其他数组一样对待它:

var opts = $('#color option')
var output = ""    
for(var x=0;x<opts.length;x++) {
    output+=" " + opts[x].value    
}
alert(output)