gbs*_*gbs 1 javascript jquery radio-button
从jQuery 1.4.4迁移到jquery 1.6.4开始破坏与radiobuttonlist相关的代码.
以下是复制奇怪行为的示例代码和步骤:
重现步骤:
1:已选择无线电A.
2:选择无线电B.
3:在文本框中输入内容并标签输出.
您将看到:A已被选中,B被检查警报.
那么究竟从1.6.4变为1.4.4会导致它破裂?
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
function txtchanged(tb) {
$(".rbl").find("input[type='radio']").each(function () {
alert($(this).val() + " " + $(this).attr("checked"));
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:RadioButtonList ID="RadioButtonList1" runat="server" CssClass="rbl">
<asp:ListItem Text="A" Value="A" Selected="True" />
<asp:ListItem Text="B" Value="B" />
</asp:RadioButtonList>
<asp:TextBox ID="tb" runat="server" CssClass="tb" onblur="txtchanged(this)"></asp:TextBox>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
引用OP:
那么究竟从1.6.4变为1.4.4会导致它破裂?
单选按钮checked不是属性,它是属性.jQuery在1.6版中更新以纠正此语义错误.
改变这个......
.attr("checked")
Run Code Online (Sandbox Code Playgroud)
对...
.prop("checked")
Run Code Online (Sandbox Code Playgroud)
EDITS:
至于OP关于为什么jQuery不向后兼容的评论:
1)它会给代码增加膨胀.
2)"向后兼容"几乎与完全解决这个问题完全相同.
也改变这个......
.removeAttr('checked')
Run Code Online (Sandbox Code Playgroud)
对...
.removeProp('checked')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |