选择所有第一个选项

时间:2012-01-11 14:49:15

标签: jquery jquery-selectors

从以下标记中,我想获得选项a1,(all)和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>

4 个答案:

答案 0 :(得分:3)

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

第一部分将获得option的第一个select而没有optgroup。第二个获得第一个option的第一个optgroup

虽然我对您的原始示例感到有些困惑,因为我认为在这种情况下您不会得到a,因为第一个选项是(all)选项,而不是a

答案 1 :(得分:2)

这将选择a1,(all)和a:

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

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

答案 2 :(得分:0)

我认为这应该适合你:

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

您选择select option的{​​{1}}的第一个孩子,此外,专门选择optgroup的第一个孩子,其中aoption {{1}}。

答案 3 :(得分:0)

试试这个:

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

演示: 访问:http://jsfiddle.net/wBW4N/ 并检查选择框