jQuery复选框选中/取消选中

18 浏览
0 Comments

jQuery复选框选中/取消选中

这个问题已经有答案了

如何使用jQuery设置复选框的“checked”属性

如何合适地选中或取消选中一个复选框,这个复选框位于触发我的函数的元素内部?

这是我的代码:

 

TEXT

$("#news_list tr").click(function() { var ele = $(this).find('input'); if(ele.is(':checked')){ ele.removeAttr('checked'); $(this).removeClass('admin_checked'); }else{ ele.attr('checked', 'checked'); $(this).addClass('admin_checked'); } });

问题在于我只能够选中和取消选中一次,选中和取消选中有时仍然可以添加/删除类,但是再也不能检查一个框(即使我点击复选框而不是表格行)。

我尝试使用.bind(\'click\')触发器,但结果相同。

有什么解决方法吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

使用 prop() 代替 attr() 设置 checked 的值。在 find 方法中使用 :checkbox 替代 input,并且要更加具体。

实时演示

$("#news_list tr").click(function() {
    var ele = $(this).find('input');
    if(ele.is(':checked')){
        ele.prop('checked', false);
        $(this).removeClass('admin_checked');
    }else{
        ele.prop('checked', true);
        $(this).addClass('admin_checked');
    }
});

使用 prop 替代 attr 设置类似 checked 的属性

自 jQuery 1.6 版本以来,.attr() 方法对于没有设置的属性返回 undefined。要检索和更改表单元素的选中、选定或禁用状态等 DOM 属性,请使用 .prop() 方法

0
0 Comments

使用.prop()替代,如果我们沿用你的代码,然后像这样比较:

看看这个例子jsbin

  $("#news_list tr").click(function () {
    var ele = $(this).find(':checkbox');
    if ($(':checked').length) {
      ele.prop('checked', false);
      $(this).removeClass('admin_checked');
    } else {
      ele.prop('checked', true);
      $(this).addClass('admin_checked');
    }
 });

更改:

  1. input改为:checkbox
  2. 比较选中的复选框长度
0