esolve
V2EX  ›  问与答

Checkbox 的 checked 属性为 false 了,但是还是显示打钩怎么办?

By esolve at 2017 年 12 月 13 日 · 2619 次点击

有多个 checkbox 只能选择一个 当有两个都被勾选,最后选的会让之前选的被取消打钩 我用下面的方法

        $(':checkbox[type="checkbox"]').each(function(){
            $(this).click(function(){
                if($(this).prop('checked')){
                    $(':checkbox[type="checkbox"]').removeAttr('checked');
                    $(this).prop('checked','true');
                }
            });
        });

可是调试发现 前面的勾选依然显示打钩,虽然他们的属性 checked 为 false 了 怎么回事?

4 条回复
esolve
   1
esolve  
OP
   2017 年 12 月 13 日
顶顶顶
Fishdrowned
   2
Fishdrowned  
   2017 年 12 月 13 日
前面是 $(this).prop('checked'),后面是 .removeAttr('checked'),少年你的内心很矛盾啊。

把 .removeAttr('checked') 改成 .prop('checked', false);
esolve
   3
esolve  
OP
   2017 年 12 月 14 日 via iPhone
@Fishdrowned 试过,没用,效果一样的啊,
esolve
   4
esolve  
OP
   2017 年 12 月 14 日
@Fishdrowned 说错了,

我之前用的是

$(':checkbox[type="checkbox"]'). .prop('checked', false);

这个不仅显示没有取消打钩
连属性 checked 都继续为 true
© 2026 V2EX · 24ms · 3.9.8.5