JQuery:切换用户刚刚切换的复选框

时间:2012-03-16 21:03:26

标签: jquery checkbox

编辑这个问题Setting "checked" for a checkbox with jQuery?的骗局,因为这里的问题专门询问了特殊情况:“一旦用户点击在复选框上,该复选框停止响应“已检查”属性更改。“

有一个答案(其中一个与其他答案相比较少),谈到这一点,但答案中的所有链接都完全被打破......

我正试图“出于好奇”做点什么。我正在努力做的事情毫无意义。

我成功使用JQuery来显示是否已使用警报选中或取消选中复选框。以下工作正常:

$(document).ready(function() {
  $('.cb').change(function(){
    if ($('.cb').is(':checked')) {
      alert('changed to checked');
    } else {
      alert('changed to unchecked');
    }
   });
});

但是我无法弄清楚如何将复选框恢复到初始状态(再一次:这样做没有意义,但我想这样做。)

是否可以这样做,是否可以将复选框切换回其原始状态而不触发更改事件?

我尝试 attr removeAttr 无济于事。

2 个答案:

答案 0 :(得分:1)

在更改事件中添加:

$(this).prop('已检查',!this.checked);

答案 1 :(得分:1)

检查我的小提琴:

http://jsfiddle.net/QvaEA/

$(document).ready(function() {
  $('.cb').change(function(){
    if ($(this).is(':checked')) {
        alert('changed to checked -> uncheck again');
        $(this).attr('checked', false);
    } else {
        alert('changed to unchecked -> recheck');
        $(this).attr('checked', true);
    }
   });
});​

在回调函数中,您应始终使用$(this)来访问触发元素。在您的代码中,您将始终使用类cb。

检查(并更改)所有复选框