【问题标题】:Jquery Iterate Through All Checked Boxes and Remove ClassJquery遍历所有选中的框并删除类
【发布时间】:2009-07-22 22:03:14
【问题描述】:

我目前正在使用 jQuery,在遍历所有“选中”复选框并删除父表行的类(称为“new_message”)方面需要一些帮助。

我有一个基本概念,但我无法完全弄清楚。

这是我目前使用的:

$("#unread_button").click(function (event) {
event.preventDefault;
$(":checkbox:checked").each( 
function() 
{ 
    if (this.checked) 
    { 
        var divs = $.makeArray($(this).parents("tr").attr("id"));
     }
$(divs).each(
    function(int)
        {
            $(this).removeClass("new_message");
        }
    );
  });  
});

最终,这也将更新数据库,因此如果可以定制代码以适应两者,那就太好了。

非常感谢任何指导!

【问题讨论】:

    标签: jquery checkbox loops


    【解决方案1】:

    我认为这会奏效:

    $('input:checkbox:checked').parents('tr').removeClass('new_message');
    

    或者,如果它只是您想要匹配的直接 TR 父级,那么:

    $('input:checkbox:checked').closest('tr').removeClass('new_message');
    

    jQuery 为您完成所有循环,因此您应该拥有所有 each()es。

    一旦你使用了 ':checked' 选择器,你应该重新检查该项目是否被选中。这应该将您的选择器结果限制为仅选中的项目。

    【讨论】:

    • 我会使用 .closest 作为父母获取所有祖先然后过滤 - 较慢
    • 我想过,但 OP 没有指定它是否只是第一级 TR 父级或是否有多个。而且由于听起来当前选择器正在工作,因此不想更改它。
    • 就是这样。谢谢。我也使用过 .closest,它也同样有效。
    • :checkbox:checked 更改为input:checkbox:checked,这里可以获得很多性能。第一个选择器等于*:checkbox:checked,jQuery 在按标签名称过滤方面要快得多(因为它使用本地函数作为标签名称,而其他过滤器使用自定义函数。)
    【解决方案2】:
    $("input:checked").each(function() {
        $(this).removeClass("new_message");
    }
    

    将从复选框本身中删除相关类,所以

    $(this).parent....
    

    应该取决于您的 HTML 的样子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-31
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多