jquery设置和删除选中的属性不起作用,javascript确实如此

时间:2013-08-01 15:47:51

标签: javascript jquery checkbox

为了清楚起见,假设我有一个复选框,我想检查并取消选中两个按钮。

我可以使用基本的javascript来检查/取消选中该框,但是使用jquery,一旦删除该属性,我就无法将其设置回来......任何想法为什么?

我创建了一个基本的fiffle来说明:

http://jsfiddle.net/2K244/

<button id='button1'>check</button>
<button id='button2'>uncheck</button>
<input type="checkbox" id="myBox1" value="polo" />
<br/>
<button id='button3'>check</button>
<button id='button4'>uncheck</button>
<input type="checkbox" id="myBox2" value="polo" />
<br/>

$(document).ready(function () {
    $('#button1').click(function () {
        $('#myBox1').attr('checked','checked');
    });
    $('#button2').click(function () {
        $('#myBox1').removeAttr('checked');
    });
    $('#button3').click(function () {
        document.getElementById('myBox2').checked = true;
    });
    $('#button4').click(function () {
        document.getElementById('myBox2').checked = false;
    });

});

5 个答案:

答案 0 :(得分:7)

您应该使用.prop()代替。来自jQuery关于.attr()的文档:

  

从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined。要检索和更改DOM属性(如表单元素的已选中,已选择或已禁用状态),请使用.prop()方法。

答案 1 :(得分:2)

您现在应该使用.prop()

http://jsfiddle.net/2K244/1/

$('#button1').click(function () {
    $('#myBox1').prop('checked',true);
});
$('#button2').click(function () {
    $('#myBox1').prop('checked', false);
});
$('#button3').click(function () {
    $('#myBox2').prop('checked', true);
});
$('#button4').click(function () {
    $('#myBox2').prop('checked', false);
});

答案 2 :(得分:0)

取消选中一个框,使用prop功能。 $('#myBox1').prop('checked', false);上没有引号的false

答案 3 :(得分:0)

我不明白你为什么不工作,但是用这个:

$("#myBox1").prop("checked",true);

$("#myBox1").prop("checked",false);

确保拥有最新版本的jQuery。

答案 4 :(得分:0)

可以使用true ||修改已检查状态的状态false方法中的.prop()秒参数。

$('#btn_checked').on('click', function() {
     $('#myBox1').prop('checked', true);
});

$('#btn_unchecked').on('click', function() {
     $('#myBox1').prop('checked', false);
});

jsFiddle