为什么当select
中包含optgroup时,这不起作用?
不起作用
$("option:first-child").attr("selected", "selected");
作品
$("select>option:first-child").attr("selected", "selected");
当我执行$("select:eq(1) option:first-child").val()
时,它似乎正确option
,但当我致电attr()
时,却没有选择正确的{{1}}。
答案 0 :(得分:5)
如果您检查$("option:first-child").length
的值,您会发现它是5
。 :first-child
正在选择父母的第一个子项,即:
<SELECT id='a'>
<OPTION selected value=0>(all)</OPTION><!-- THIS ONE -->
<OPTION value=1>A</OPTION>
<OPTION value=2>B</OPTION>
<OPTION value=3>C</OPTION>
</SELECT>
<SELECT id='b'>
<OPTION selected value=0>(all)</OPTION><!-- THIS ONE -->
<optgroup label="A">
<OPTION value=1>A</OPTION><!-- THIS ONE -->
</optgroup>
<optgroup label="B">
<OPTION value=2>B</OPTION><!-- THIS ONE -->
</optgroup>
<optgroup label="C">
<OPTION value=3>C</OPTION><!-- THIS ONE -->
</optgroup>
</SELECT>
此外,$("select:eq(1) option:first-child").length
等同于4
,原因与上述相同。在数组上调用.val()
输出第一个元素值,但选择器正在选择所有4个元素。
如果要在每个select
中选择第一个元素:
$("select").find("option:first").attr("selected", true);