这是我的代码:

$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。此外,对于selects没有这样的属性。select仅对于defaultSelecteds(而不是options)才是真的,如果它们是默认选择的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/

10-09 09:17