我如何识别不同行中的以下复选框,并单独选中/取消选中它们.
其中[number]是dinamically创建的.
示例:如果选中"F",则取消选中"PR".如果选中"PR",则取消选中"F".如果选中"DPH",则取消选中全部.
$(":checkbox").change(function() { var current = this.value; if (current == "F") { $(":checkbox[value=PR]").prop("checked", false); } if (current == "PR") { $(":checkbox[value=F]").prop("checked", false); } if (current == "DPH") { $(":checkbox[value=F]").prop("checked", false); $(":checkbox[value=PR]").prop("checked", false); } });
此代码正常,但如果我取消选中第二行中的复选框,则第一行中的复选框也将取消选中:
这将按照您的要求执行:
jsFiddle Working Example
var $this,num,val; $('input[name^="eph-ds["]').click(function() { $this = $(this); num = $this.attr('name').split('[')[1].replace("]", ""); val = $this.val(); if (val=="F"){ $('input:checkbox[name="eph-ds['+num+'][]"][value="PR"]').prop('checked',false); }else if (val=="PR"){ $('input:checkbox[name="eph-ds['+num+'][]"][value="F"]').prop('checked',false); }else if (val=="DPH"){ $('input:checkbox[name="eph-ds['+num+'][]"]').not($this).prop('checked',false); } });
笔记:
在顶部声明的变量因此无需在每次复选框单击时重新声明它们
当检查DPH时,jsFiddle添加禁用F和PR(否则在检查DPH框后,用户可以检查PR或F).
没有必要将您的复选框作为组查询(如前一个响应者所建议)
如果难以理解,这条线可以分为三行:
num = $this.attr('name').split('[')[1].replace("]", "");
name = $this.attr('name'); //returns eph-ds[####][]
temp = name.split('[')[1]; //returns ####]
num = temp.replace("]", ""); //removes trailing ]