我有一个标题复选框和随后的"孩子"每次我的应用加载时以编程方式显示的复选框。
我试图确保如果用户取消选中所有子框,则会自动取消选中标题。我在开始时通过页面上的所有复选框进行映射:
var x = '';
$(document).ready(function() {
$('.class').map(function () {
x += ('Yes');
});
alert(x);
});
这给了我一个数组"是"对于每个部分中存在的复选框的数量。
我需要能够将数组切片为任何内容,因为用户取消选中该类中的框。我被卡住了。
这是我的变革听众:
$(':checkbox').change(function () {
if(**THE CHECKBOX I AM UNCHECKING HAS THE CLASS**) {
x.slice(-1);
}
});
解决方案:
<input class='children' type='checkbox'/>
<input class='children' type='checkbox'/>
<input class='header' type='checkbox'/>
var check_count = $(".children:checked").length;
$(".children").change(function () {
if(!this.checked) {
if (check_count == 0) {
$(".header").prop("checked", false);
}
}
});
答案 0 :(得分:1)
您可以简单地使用返回已选中复选框的jQuery选择器,并使用from itertools import permutations, product
a='ABC'
b=['*', '%3A']
l=[a]*2+[b]
def g(list):
for p in permutations(list):
yield from product(*p)
result=g(l)
来获取计数。
.length
答案 1 :(得分:0)
可能不是最有效的,但这样的事情可能有用。每次用户点击复选框时,它都会查看所有其他复选框。如果至少有一个人有支票,则说明是假的,然后退出。如果没有选中,则取消选中父级。
$(".childrenCheckBoxes").change(function(){
$(".childrenCheckBoxes").each(function(){
if (this.checked)
return false;
});
$("#parentCheckBox").prop('checked', false);
return true;
});
编辑:Barmar的方法更清晰