2012-01-11 78 views
1

,我想要选项a1,(全部)和a。我正在使用$("option:first-child"),直到我将optgroup添加到某些选择。现在代码选择了a1,b1,(all),1,3和a。从以下标记中选择所有第一个选项

<select> 
    <optgroup label="a"> 
    <option>a1</option> 
    <option>a2</option> 
    </optgroup> 
    <optgroup label="b"> 
    <option>b1</option> 
    <option>b2</option> 
    </optgroup> 
</select> 

<select> 
    <option>(all)</option> 
    <optgroup label="a"> 
    <option>1</option> 
    <option>2</option> 
    </optgroup> 
    <optgroup label="b"> 
    <option>3</option> 
    <option>4</option> 
    </optgroup> 
</select> 

<select> 
    <option>a</option> 
    <option>b</option> 
    <option>c</option> 
</select> 

回答

3
$("select > option:first-child, optgroup:first-child > option:first-child") 

第一部分将得到第一个optionselect s的无optgroup。第二个获得第一个的第一个optgroup

虽然我稍你原来的例子困惑,因为我不相信你会得到a在这种情况下,因为第一个选项是(all)选项,而不是a

+0

对不起,我的例子是不完整的 – Homer 2012-01-11 15:03:34

+0

我相信这应该仍然工作。 http://jsfiddle.net/zh4X8/1/使它们成为多个例子,这样你就可以清楚地看到哪些是红色的。 – 2012-01-11 16:05:27

2

这将选择A1,(所有)和:

$('select').find('option:first').each(function(ix) { alert(this.text); }); 

事实上,这将始终选择第一个选项中的每个选择。

0

我想这应该为你做它:

$('optgroup.a > option:first-child, select > option:first-child') 

你选择任何select是一个option的第一个孩子,另外,特别是与a类选择的optgroup的第一个孩子是是option

0

试试这个:

$('select optgroup[label]["a"] option:eq(0),select:eq(1) option:eq(0)').attr('selected', 'selected'); 

演示: 访问:http://jsfiddle.net/wBW4N/ 和检查selectboxes

+0

不完全工作,我想你的意思是'$('select optgroup [label =“a”]选项:eq(0),选择:eq(1)选项:eq(0)')'。也需要更通用。网页上还有10个其他选择。我不想手动为每一个代码 – Homer 2012-01-11 16:09:49

相关问题