jquery .prop('defaultSelected') 似乎在 IE9 中出现故障
jquery .prop('defaultSelected') seems to malfunction in IE9
这是我的代码:
$selects = $('select');
$selects.val( $selects.prop('defaultSelected'));
它应该重置我所有选择元素的值,但它不能在 IE9 中仅与我的一个元素正常工作。它们之间的唯一区别是我在 html 文件中硬编码的这个,其余的都是用 backbone 渲染的(虽然结构相同!标记:
<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>
我模仿了大写和小写,所以如果这会影响,你也可以记住这一点。 :)
那么,谁能找到我明显缺少的东西?
你的代码实际上并没有做你认为它做的事情。
它尝试仅将第一个select
的属性defaultSelected
设置为.val()
。此外,select
没有这样的属性。 如果option
秒(不是 select
秒)是默认选择的option
,则defaultSelected
仅适用于 秒。
以下方法使用 .val()
作为您的代码(此处演示 jsFiddle):
$selects.val(function () {
return $(this).find('option').filter(function () {
return $(this).prop('defaultSelected');
}).val();
});
如果您更喜欢使用.prop()
或者如果您有<select multiple>
,则应使用:
$selects.find('option').prop('selected', function () {
return $(this).prop('defaultSelected');
});
请参阅此处的演示。
注意:请记住defaultSelected
可以通过编程方式更改,因此请确保您知道代码的边界。
你的代码不太正确。当您调用 .val()
时,它会将您传入的单个值应用于所有元素。您可能希望:
$selects.val(function() { return $(this).prop('defaultSelected'); });
在您的代码中,您获取了集合中第一个<select>
元素的"defaultSelected"属性。 该属性值用于设置所有<select>
元素,因此没有具有该值的选项的元素不会受到影响。 通过传递一个函数,你告诉jQuery询问对列表中的每个函数使用什么值。 上面的函数只是依次获取每个元素的"defaultSelected"属性。
编辑 — 此外,正如@Bergi在评论中指出的那样,"defaultSelected"属性位于<option>
元素上,而不是<select>
元素上,因此您必须找到正确的元素:
$selects.val(function() {
return $(this).find('option[selected]').val() || undefined;
});
.defaultSelected
(就像.selected
一样)是每个<option>
元素的属性,而不是<select>
的属性!因此,您的代码会将值设置为 undefined
。
你想要的是
$selects.find("option").prop("selected", function() {
return this.defaultSelected;
});
- Angular JS IE9 Hashbang url rewriting
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- javascript.点击隐藏事件故障
- 在IE9中的输入字段中输入焦点最近按钮
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- IE9的HTML5 Canvas getImageData()函数存在问题
- 使用JavaScript在IE9中获取数据列表选项
- JS条件故障排除
- 尝试初始化()Spine's控制器和故障
- 物体故障
- Ajax模式下的Jquery Select2 V4在IE9中不起作用
- jQuery无法在IE9中隐藏选项
- 间歇性浏览捆绑包故障(可能是brfs)
- CORS故障无法解决jquery,laravel5.2
- 对象为null或IE9中存在未定义错误
- IE9抛出错误的reactJs
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- jquery .prop('defaultSelected') 似乎在 IE9 中出现故障
- 变换旋转+IE9/10故障