Jquery 仅选择父div中的复选框
我试图将一些jQuery应用于复选框,但仅限于最近的div中 我有一个x动态创建的复选框列表-如果所有复选框都为空,那么我希望它们都显示为选中状态 HTMLJquery 仅选择父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'
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*/
});
}