Jquery 仅选择父div中的复选框

Jquery 仅选择父div中的复选框,jquery,checkbox,jquery-selectors,Jquery,Checkbox,Jquery Selectors,我试图将一些jQuery应用于复选框,但仅限于最近的div中 我有一个x动态创建的复选框列表-如果所有复选框都为空,那么我希望它们都显示为选中状态 HTML 1. 2. 3. $(文档).ready(函数(){ 如果($('.limitall:checkbox:checked')。长度==0){ $('.limitall').prop('checked',true); } $(“.limitall”).change(函数(){ 如果($('.limitall:checkbox:checked'

我试图将一些jQuery应用于复选框,但仅限于最近的div中

我有一个x动态创建的复选框列表-如果所有复选框都为空,那么我希望它们都显示为选中状态

HTML


1.
2.
3.
$(文档).ready(函数(){
如果($('.limitall:checkbox:checked')。长度==0){
$('.limitall').prop('checked',true);
}
$(“.limitall”).change(函数(){
如果($('.limitall:checkbox:checked')。长度==0){
$('.limitall').prop('checked',true);
}
});
});
只要页面上只有一个具有limitall类的“集合”项目,此选项就可以正常工作-如果有更多,则将两个组视为一个集合,并且仅当所有10个都为空时,此选项才有效

因此,如果我有:

<div class="col-lg-6">
    <label class="checkbox-inline"><input type="checkbox" name="permissions[]" class="perm limitall" value="1">1</label>
    <label class="checkbox-inline"><input type="checkbox" name="permissions[]" class="perm limitall" value="2">2</label>
    <label class="checkbox-inline"><input type="checkbox" name="permissions[]" class="perm limitall" value="3">3</label>
</div>

<div class="col-lg-6">
    <label class="checkbox-inline"><input type="checkbox" name="permissions2[]" class="perm2 limitall" value="1">1</label>
    <label class="checkbox-inline"><input type="checkbox" name="permissions2[]" class="perm2 limitall" value="2">2</label>
    <label class="checkbox-inline"><input type="checkbox" name="permissions2[]" class="perm2 limitall" value="3">3</label>
</div>

1.
2.
3.
1.
2.
3.
这将其视为6组,而不是2组3组-我如何确保不会发生这种情况,并且每一组都独立处理


上面的HTML结构将始终适用,因此复选框始终位于一个标签内,该标签位于具有col-lg-6类的div内,但输入的名称是动态设置的,因此我无法使用该标签


您可以给您的
div
和id或一个特殊的类,并针对该
div
中的复选框。例如:

<div class="col-lg-6" id="checkboxes-1">
    <label class="checkbox-inline"><input type="checkbox" name="permissions[]" class="perm limitall" value="1">1</label>
    <label class="checkbox-inline"><input type="checkbox" name="permissions[]" class="perm limitall" value="2">2</label>
    <label class="checkbox-inline"><input type="checkbox" name="permissions[]" class="perm limitall" value="3">3</label>
</div>

<div class="col-lg-6" id="checkboxes-2">
    <label class="checkbox-inline"><input type="checkbox" name="permissions2[]" class="perm2 limitall" value="1">1</label>
    <label class="checkbox-inline"><input type="checkbox" name="permissions2[]" class="perm2 limitall" value="2">2</label>
    <label class="checkbox-inline"><input type="checkbox" name="permissions2[]" class="perm2 limitall" value="3">3</label>
</div>

您可以迭代所有
.col-lg-6
元素并设置唯一id。您还可以将事件处理逻辑移动到通用函数中

$(".col-lg-6").each(function(idx) {
    var id = 'someidentifier' + idx
    $(this).attr('id', id);
    handleEvents(id);
});

var handleEvents = function(id) {

   $('#' + id + ' .limitall').change(function(){
      /*your logic*/
    }); 
}
$(文档).ready(函数(){
复选框($(“.col-lg-6.Active”))
$(“.col-lg-6.活动输入:复选框”)。打开(“更改”,函数(){
复选框($(this.parent().parent());
});
});
功能复选框(元素){
$.each(元素、函数(索引、值){
var hasCheked=false;
如果($(value).find('input:checkbox')是(“:checked”))
hasCheked=true;
如果(!hasCheked)
$(值).find('input:checkbox').prop('checked',true);
});
}

1.
2.
3.
1.
2.
3.
1.
2.
3.

他说:“上面的HTML结构将始终适用,因此复选框始终位于一个标签内,该标签位于具有col-lg-6类的div内,但输入的名称是动态设置的,因此我无法使用该标签。”。而且你不能在两个不同的标签中使用相同的id。这不是w3c编译器。输入的名称是动态设置的,也许他可以更改div的id。两个div都有相同的id?好的,但即使是现在,这不意味着我需要为每个html块都有一个jQuery代码块吗?不,可以动态地(使用forEach函数的索引)将其作为选择器的id。我不知道你到底需要什么,也许你可以澄清一下?谢谢,这真的很接近!我唯一的问题是,这段代码似乎适用于任何带有类checkbox内联的复选框,但我不希望它适用于某些复选框。我尝试将代码中的类从.col-lg-6更改为其他类,然后只在我想要的类上使用该类,但它仍然适用于所有内容。该代码是否可能仅适用于div上具有特定附加等级的col-lg-6?第二个系列没有“活动”等级,不受影响。
$(document).ready(function () {
  if ($('#checkboxes-1 .limitall:checkbox:checked').length == 0){
    $('#checkboxes-1 .limitall').prop('checked', true);
  }
  $("#checkboxes-1 .limitall").change(function(){
    if ($('#checkboxes-1 .limitall:checkbox:checked').length == 0){
      $('#checkboxes-1 .limitall').prop('checked', true);
    }
  });
});
$(".col-lg-6").each(function(idx) {
    var id = 'someidentifier' + idx
    $(this).attr('id', id);
    handleEvents(id);
});

var handleEvents = function(id) {

   $('#' + id + ' .limitall').change(function(){
      /*your logic*/
    }); 
}