我想要什么:
当我单击“报告”复选框时,它应该选中其下方的所有复选框。我是说 “报告”、“电子邮件组”、“短信组”、“国家组”、“通话结果”下面的所有复选框 如图所示。我认为这就是理想的情况
现在发生了什么:
当我点击“报告”时,只有选中的复选框从 “报告事件”至“报告测试新内容”。什么事也没有发生 “电子邮件组”及其子复选框以及 SMS Group、States Group 的类似情况 并调用结果组。因此,我必须手动单击“电子邮件组”和其他组来选择其子组。
我已经在 jsfiddle 中定义了我正在使用的以下函数这里:
function parentCheckboxCheck(obj, childrenClass, parentId ){
if(parentId == '' ){
if($(obj).is(':checked')){
$(childrenClass).attr('disabled',false);
$(childrenClass).attr('checked',true);
}
else {
$(childrenClass).attr('checked',false);
$(childrenClass).attr('disabled',true);
}
}else{
if($(obj).is(':checked') && $('#'+parentId).is(':checked')){
$(childrenClass).attr('disabled',false);
$(childrenClass).attr('checked',true);
}
else {
$(childrenClass).attr('checked',false);
$(childrenClass).attr('disabled',true);
}
}
}
JS fiddle 链接:http://jsfiddle.net/VKV7t/1/
请告诉我我在这里做错了什么或者需要进行哪些修改?
这是我的冷融合代码:
<ul class="list_permisstion">
<cfif listfindNoCase(listAllPermission,Reporting_Title) GT 0>
<span class="label_permission">
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,Reporting_Title) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#Reporting_Title#" id="Reporting" onclick = "parentCheckboxCheck(this,'.ReportingChilds', '')" value="#Reporting_Title#" checked="#Checked_checkbox#">
<label class="label_permission" for="Reporting">#Reporting_Title#</label>
</span>
</cfif>
<ul class="list_permisstion">
<cfloop array="#Reporting_List#" index="ListLoop" >
<cfif listfindNoCase(listAllPermission,ListLoop) GT 0>
<li>
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,ListLoop) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#ListLoop#" id="ListLoop" class="ReportingChilds" value="#ListLoop#" checked="#Checked_checkbox#">
<label for="label_permission">#ListLoop#</label>
</li>
</cfif>
</cfloop>
</ul>
<!--- For Email Group --->
<ul class="list_permisstion">
<cfif listfindNoCase(listAllPermission,Reporting_Group_Title) GT 0>
<span class="label_permission">
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,Reporting_Group_Title) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#Reporting_Group_Title#" id="ReportGroup" onclick = "parentCheckboxCheck(this,'.reportGroupChilds','Reporting')" class="reportingChilds" value="#Reporting_Group_Title#" checked="#Checked_checkbox#">
<label for="ReportGroup">#Reporting_Group_Title#</label>
</span>
</cfif>
<cfloop array="#Reporting_Group_List#" index="ListLoop" >
<cfif listfindNoCase(listAllPermission,ListLoop) GT 0>
<li>
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,ListLoop) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#ListLoop#" id="ListLoop" class="reportGroupChilds" value="#ListLoop#" checked="#Checked_checkbox#">
<label for="ReportGroup">#ListLoop#</label>
</li>
</cfif>
</cfloop>
</ul>
<!--- For SMS Group --->
<ul class="list_permisstion">
<cfif listfindNoCase(listAllPermission,Reporting_SMS_Group_Title) GT 0>
<span class="label_permission">
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,Reporting_SMS_Group_Title) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#Reporting_SMS_Group_Title#" id="ReportSMSGroup" onclick = "parentCheckboxCheck(this,'.reportSMSGroupChilds','Reporting')" class="reportingSMSChilds" value="#Reporting_SMS_Group_Title#" checked="#Checked_checkbox#">
<label for="ReportSMSGroup">#Reporting_SMS_Group_Title#</label>
</span>
</cfif>
<cfloop array="#Reporting_SMSGroup_List#" index="ListLoop" >
<cfif listfindNoCase(listAllPermission,ListLoop) GT 0>
<li>
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,ListLoop) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#ListLoop#" id="ListLoop" class="reportSMSGroupChilds" value="#ListLoop#" checked="#Checked_checkbox#">
<label for="ReportSMSGroup">#ListLoop#</label>
</li>
</cfif>
</cfloop>
</ul>
<!--- For STATES GROUP --->
<ul class="list_permisstion">
<cfif listfindNoCase(listAllPermission,Reporting_States_Group_Title) GT 0>
<span class="label_permission">
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,Reporting_States_Group_Title) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#Reporting_States_Group_Title#" id="ReportSTATESGroup" onclick = "parentCheckboxCheck(this,'.reportSTATESGroupChilds','Reporting')" class="reportingSTATESChilds" value="#Reporting_States_Group_Title#" checked="#Checked_checkbox#">
<label for="ReportSTATESGroup">#Reporting_States_Group_Title#</label>
</span>
</cfif>
<cfloop array="#Reporting_StatesGroup_List#" index="ListLoop" >
<cfif listfindNoCase(listAllPermission,ListLoop) GT 0>
<li>
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,ListLoop) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#ListLoop#" id="ListLoop" class="reportSTATESGroupChilds" value="#ListLoop#" checked="#Checked_checkbox#">
<label for="ReportSTATESGroup">#ListLoop#</label>
</li>
</cfif>
</cfloop>
</ul>
<!--- For CALL RESULTS Group --->
<ul class="list_permisstion">
<cfif listfindNoCase(listAllPermission,Reporting_CallResults_Group_Title) GT 0>
<span class="label_permission">
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,Reporting_CallResults_Group_Title) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#Reporting_CallResults_Group_Title#" id="ReportSTATESGroup" onclick = "parentCheckboxCheck(this,'.reportCALLRESULTSGroupChilds','Reporting')" class="reportingCALLRESULTSChilds" value="#Reporting_CallResults_Group_Title#" checked="#Checked_checkbox#">
<label for="ReportCALLRESULTSGroup">#Reporting_CallResults_Group_Title#</label>
</span>
</cfif>
<cfloop array="#Reporting_CallResultsGroup_List#" index="ListLoop" >
<cfif listfindNoCase(listAllPermission,ListLoop) GT 0>
<li>
<cfset Checked_checkbox = false>
<cfif listfindNoCase(checkedAllPermistion,ListLoop) GT 0>
<cfset Checked_checkbox = true>
</cfif>
<cfinput type="checkbox" name="#ListLoop#" id="ListLoop" class="reportCALLRESULTSGroupChilds" value="#ListLoop#" checked="#Checked_checkbox#">
<label for="ReportCALLRESULTSGroup">#ListLoop#</label>
</li>
</cfif>
</cfloop>
</ul>
</ul>
最佳答案
您拥有 <ul class="list_permisstion">
block 中的所有复选框。如果我的理解正确的话,您需要选中该 block 中的所有复选框。所以基本上你需要获取该 block 内的所有复选框。 jQuery find() 函数搜索所选元素的后代,在您的情况下将是 <ul class="list_permisstion">
。检查http://api.jquery.com/find/ .
示例函数如下所示,其中childrenClass是您需要检查的复选框的容器的类名。
function parentCheckboxCheck(obj, childrenClass, parentId ){
if($(obj).is(':checked')){
$(childrenClass).find('input[type="checkbox"]').attr('disabled',false);
$(childrenClass).find('input[type="checkbox"]').attr('checked',true);
}
else {
$(childrenClass).find('input[type="checkbox"]').attr('checked',false);
$(childrenClass).find('input[type="checkbox"]').attr('disabled',true);
}
}
关于javascript - 没有选中所需的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21737647/