使用jQuery选择组中的复选框

时间:2011-08-30 20:44:33

标签: jquery asp.net

我正在尝试选择某些复选框(想象一下选中所有复选框以检查其他框)。我成功地“检查”了他们但不想全部完成。请考虑以下屏幕截图:

enter image description here

这是jQuery。它在我需要时选择每个复选框,只选择该组中的复选框。由于这个ASP.NET是动态的,我几乎无法控制HTML,所以我需要在对象出现时找到并选择我需要的东西。换句话说,我不能添加类名,id等。

$(".anAlarmGroup input:first-child").click(function () {
                if ($(this).is(":checked")) {
                    //Select all alarms following this group heading until reaching the next group heading, while also grabbing each alarm ID
                    $('.anAlarm').find('input[type="checkbox"]').attr('checked', 'checked');

                }
                else {
                    $('.anAlarm').find('input[type="checkbox"]').removeAttr('checked');
                }
            });

4 个答案:

答案 0 :(得分:1)

$('.anAlarm').find('input:checkbox[name="whatever"]').prop('checked', true);  

或者,在您的情况下:

$(".anAlarmGroup input:first-child").click(function () {
    $('.anAlarm')
        .find('input:checkbox[name="'+$(this).attr('name')+'"]')
        .prop('checked', ($(this).is(':checked')));
});

这应该只检查(或取消选中)具有相同名称的复选框。

答案 1 :(得分:0)

如果没有看到您的代码,很难找到一个万无一失的解决方案,但是使用JQuery,您可以使用CSS样式选择器来选择DOM元素。例如,如果该字段集具有唯一的类或ID,则可以使用此优势,并选择仅作为该特定字段集的子项的输入。或者,如果字段集没有唯一ID,您可以在表单本身的第一个子选择器上选择它。

答案 2 :(得分:0)

在您的点击处理函数中,您可以使用$(this).siblings('input[type="checkbox"]').attr('checked', 'checked');$(this).parent().find('input[type="checkbox"]').attr('checked', 'checked');,具体取决于它们的分组方式。这只会在DOM中寻找类似或更深层次的元素。

答案 3 :(得分:0)

如果要动态生成页面,可以像这样添加类。我创建了这个方法,因为我经常添加多个css类,并希望简化它。所以你只需要调用AddCssClass(s​​omeControl,“anAlarmGroup”)

public static void AddCssClass(WebControl control,string cssClass)
    {
      if (!control.CssClass.Contains(cssClass))
      {
        control.CssClass += (control.CssClass == String.Empty ? "" : " ") + cssClass;
      }
    }

请注意,如果css类是另一个类的子字符串,如果已经存在“bolditalic”,则添加“bold”将无法添加css类。