为什么这个“检查”不起作用?

时间:2011-06-20 07:19:30

标签: javascript jquery html dom

这是代码:

    $('#checkBoxContact1').click(function(e) {
        e.preventDefault();

        if ($('#chbBox1').attr('checked') == true)
            $('#chbBox1').attr('checked', 'false');
        else $('#chbBox1').attr('checked', 'true');
    });

点击链接时我会这样说。但实际上似乎它不起作用......

也许我应该使用:check?

2 个答案:

答案 0 :(得分:5)

使用.prop(),更重要的是,不引用布尔值。

对于布尔属性,纯粹的存在很重要。 checked=""checked="no"checked="false"都会导致元素被检查。 要通过属性取消检查元素,您必须使用.removeAttr('checked')

但是,您可以使用属性,它是一个实际的布尔值。所以.prop('checked', true_or_false)会做你想要的。实际上你甚至可以使用.attr('checked', true_of_false),因为jQuery 1.6.1但使用.prop()代替.attr()要快一点,因为它不需要检查它是否实际上是你想要的属性设置而不是属性。

答案 1 :(得分:0)

试试这样:

1. $('#chbBox1').attr('checked', ''); // for false
2. $('#chbBox1').attr('checked', 'checked'); //for true

upto jQuery-1.5.2#1正在运行。

在jQuery-1.6中它的表现如实。