微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery无法通过元素上的attr()设置“selected”=“selected”?

<select>
    <option>1</option>
    <option>2</option>
    <option class="test">3</option>
</select>

$('.test').attr('selected','selected');​

上面的选择框会选择第三个选项作为认选项而不会出现任何问题.但是,如果使用Firebug检查元素,则所选<选项>中不存在任何selected =“selected”属性.

我知道这不是一个大问题,因为它仍然有效,但我需要选择=“选中”,所以我的其他脚本可以捕获它并执行进一步处理.那里有没有解决方法

谢谢.

解决方法

所选属性与选项的当前选择状态不对应. selected属性对应于认选择,如果在窗体上调用.reset()(或单击type =“reset”按钮),则将恢复该属性.可以使用所选的DOM属性访问当前选择状态,而在DOM属性defaultSelected下访问由属性反映的认选择.

对于< input type =“text”> /< textarea>上的值与defaultValue相同,并且在type =“checkBox”/“radio”上选中/ defaultChecked.

jQuery的attr()被误导命名,它试图假装属性属性是同样的事情是有缺陷的.使用attr()时,通常是访问属性,而不是属性.因此,$(el).attr(‘selected’,’selected’)实际上正在执行el.selected =’selected’.这是因为’selected’和任何非空字符串都是’truthy’:它被转换为el.selected = true.但这在任何时候都不会触及selected =“selected”属性.

IE进一步使这种已经令人困惑的情况复杂化:(a)使getAttribute / setAttribute错误,因此它访问属性而不是属性(这就是为什么你不应该在HTML文档中使用这些方法),以及(b)错误地映射当前表单说明HTML属性,因此属性确实出现在该浏览器中.

but I need selected=”selected” there

为什么?您是否将表单序列化为innerHTML?这将不包括表单字段值(再次,除了IE中由于错误),因此不是存储字段值的可用方法.

原文地址:https://www.jb51.cc/jquery/179085.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐