1

我看到 jQuery 的一个有趣的行为,我不知道为什么,现在它不是一个真正的问题,因为我“修复”了它,但我想和你分享这个,看看代码:

            switch(id){
            case "1k":
                check5k.attr('checked', false);
                check10k.attr('checked', false);
                check1k.attr('checked', true);
                image1k.attr('class', 'radio-checked1k');
                image5k.attr('class', 'radio5k');
                image10k.attr('class', 'radio10k');
                break;
            case "5k":
                check1k.attr('checked', false);
                check10k.attr('checked', false);
                check5k.attr('checked', true);
                image1k.attr('class', 'radio1k');
                image5k.attr('class', 'radio-checked5k');
                image10k.attr('class', 'radio10k');
                break;
            case "10k":
                check1k.attr('checked', false);
                check5k.attr('checked', false);
                check10k.attr('checked', true);
                image1k.attr('class', 'radio1k');
                image5k.attr('class', 'radio5k');
                image10k.attr('class', 'radio-checked10k');
                break;
        }

所以,它有效,当我尝试时alert($("input:checked").val()),它会显示当前选择的单选值,但是,如果我这样做:

            switch(id){
            case "1k":
                check1k.attr('checked', true);
                check5k.attr('checked', false);
                check10k.attr('checked', false);
                image1k.attr('class', 'radio-checked1k');
                image5k.attr('class', 'radio5k');
                image10k.attr('class', 'radio10k');
                break;
            case "5k":
                check1k.attr('checked', false);
                check5k.attr('checked', true);
                check10k.attr('checked', false);
                image1k.attr('class', 'radio1k');
                image5k.attr('class', 'radio-checked5k');
                image10k.attr('class', 'radio10k');
                break;
            case "10k":
                check1k.attr('checked', false);
                check5k.attr('checked', false);
                check10k.attr('checked', true);
                image1k.attr('class', 'radio1k');
                image5k.attr('class', 'radio5k');
                image10k.attr('class', 'radio-checked10k');
                break;
        }

并尝试使其alert($("input:checked").val())仅显示 10k id 的值,其他显示未定义。10k 显示该值,因为在这种情况下它是最后一个设置为 true 的值。

为什么会这样?

4

1 回答 1

0

您将选中的属性设置错误。在 jQuery 中,您.attr('checked', 'checked')可以设置它并.removeAttr('checked')取消设置它。*

*在 jQuery 1.6 之前。在 1.6 之后,您使用prop

于 2012-11-22T14:40:53.363 回答