这是我的代码:
$selects = $('select');
$selects.val( $selects.prop('defaultSelected'));
它应该重置我选择的所有元素的值,但是它不能在IE9中只对我的一个元素正常工作。它们之间唯一的区别是,这一个我硬编码在一个html文件中,其余的是用主干(尽管结构相同!).
标记:
<label>
<span class="heading">Heading</span>
<select name="someStatus">
<option value="Val1" selected="selected">Val2</option>
<option value="Val2">Val2</option>
<option value="Val3" >Val3</option>
</select>
</label>
我模仿了大写和小写,所以如果这可能会影响,你也可以考虑。:)
那么,有人能找到我明显缺失的东西吗?
最佳答案
你的代码实际上并不像你想象的那样。
它试图将第一个.val()
的属性设置为defaultSelected
。此外,对于select
s没有这样的属性。select
仅对于defaultSelected
s(而不是option
s)才是真的,如果它们是默认选择的select
。
以下方法使用option
作为代码(demo jsFiddle here):
$selects.val(function () {
return $(this).find('option').filter(function () {
return $(this).prop('defaultSelected');
}).val();
});
如果您希望使用
.val()
或您已经使用.prop()
,则应使用:$selects.find('option').prop('selected', function () {
return $(this).prop('defaultSelected');
});
见demo for this here。
注意:请记住
<select multiple>
可以通过编程方式更改,因此请确保您知道代码的边界。关于javascript - jQuery .prop('defaultSelected')在IE9中似乎出现故障,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19932965/