1

考虑以下情况,

我有一个选择元素

<select>
    <option>a</option>
    <option selected="selected">b</option>
    <option selected="selected">c</option>
</select>

然后使用 jquery 我设置了多个属性

$( 'select' ).attr( 'multiple', true );

为什么下面的代码返回false?

$( 'select' ).children( 'option' ).eq( 1 ).is( ':selected' )

虽然这返回 true,

$( 'select' ).children( 'option' ).eq( 2 ).is( ':selected' )

但是如果在 HTML 代码中手动设置了 select 元素的 multiple 属性,它们都返回 true。(在 webkit、firefox 和 IE 上试过)

这是我的错误,还是这是预期的行为?

谢谢

4

1 回答 1

4

因为 select 是在没有设置多个属性的情况下呈现的,所以实际上只选择了最后一个选择的选项。允许多个值后,您需要设置选定的选项。

您的两个查询都返回您期望的结果。你错过的是你的b选项实际上没有被选中。检查浏览器中呈现的内容。

编辑:此行修复了行为,在多选激活后添加:

$('select').html($('select').html());
于 2012-09-02T11:30:12.803 回答