jQuery 1.6.4和RadioButtonList问题

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)

Spa*_*rky 5

引用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)"向后兼容"几乎与完全解决这个问题完全相同.

请参阅此页面以阅读有关每个jQuery版本的发行说明.

也改变这个......

.removeAttr('checked')
Run Code Online (Sandbox Code Playgroud)

对...

.removeProp('checked')
Run Code Online (Sandbox Code Playgroud)