Jquery Swap在更改时检查了禁用的attr

时间:2013-05-10 03:31:28

标签: jquery checkbox attr

假设选中check disable复选框并反转另一个框中的check disable。似乎工作,直到我在以前更改的复选框上再次尝试它。大脑今天炒了。非常感谢任何见解或更好的代码。

http://jsfiddle.net/sz7R4/

$('.changeCheck').change(function(event) { 
   var oldTarget = $(':checked').attr('id');
    console.log(oldTarget);
    $(this).attr('disabled', 'disabled').attr('checked', 'checked');
    $('#'+oldTarget).removeAttr('checked', 'checked').removeAttr('disabled', 'disabled');
});

3 个答案:

答案 0 :(得分:3)

目前您只定位第二个输入,您还需要在第一次输入时定位change事件。您应该使用prop()代替attr()

$('.changeCheck, #check1').change(function(event) { 
    $(this).prop("disabled", true).siblings().prop("disabled", false).prop('checked', false);
});

<强> Updated Fiddle

答案 1 :(得分:2)

试试这个:

$('.changeCheck').change(function (event) {
    $('.changeCheck').prop({
        'checked': false,
        'disabled': false
    });
    $(this).prop({
        'checked': true,
        'disabled': true
    });
});

<强> jsFiddle example

您不想使用.removeAttr().attr(),而是使用.prop()。并且单选按钮不是更好的选择吗?

答案 2 :(得分:0)

.attr()仅更改默认属性,不会更改“live”属性(从jQuery 1.6开始)。您需要改为使用.prop()方法。