Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 选中所有复选框对已创建的函数不起作用_Jquery_Ajax_Nested Checkboxes - Fatal编程技术网

Jquery 选中所有复选框对已创建的函数不起作用

Jquery 选中所有复选框对已创建的函数不起作用,jquery,ajax,nested-checkboxes,Jquery,Ajax,Nested Checkboxes,函数切换树(layergroupID){ $(“#LayerUL”+layergroupID).slideToggle(函数(){ 如果($(this).is(':hidden')){ $(“#layerCollaspe”+layergroupID).addClass(“glyphicon plus”); $(“#layerCollaspe”+layergroupID).removeClass(“glyphicon减号”); }否则{ $(“#layerCollaspe”+layergroupI

函数切换树(layergroupID){
$(“#LayerUL”+layergroupID).slideToggle(函数(){
如果($(this).is(':hidden')){
$(“#layerCollaspe”+layergroupID).addClass(“glyphicon plus”);
$(“#layerCollaspe”+layergroupID).removeClass(“glyphicon减号”);
}否则{
$(“#layerCollaspe”+layergroupID).removeClass(“glyphicon plus”);
$(“#layerCollaspe”+layergroupID).addClass(“glyphicon减号”);
}
});
}
函数chkAll(layergroupID){
$(“#LayerUL1 li输入[type='checkbox']”)prop('checked',this.checked);
if($(“#chk layer”+layergroupID).prop(“checked”)==true&($(“#LayerUL”+layergroupID).is(':hidden')){
切换树(layergroupID);
}如果($(“#chk layer”+layergroupID).prop(“checked”)==false)和($(“#layerUrl”+layergroupID.)是(':可见')){
切换树(layergroupID);
}
}
函数loadLayerGroups(){
$('tbl tr')。删除();
$.ajax({
url:“../getLayerGroups”,
数据类型:“json”,
键入:“GET”,
成功:功能(数据){

对于(var i=0;i由于HTML不可用,下面是通用代码,它将事件附加到id以
chk layer
开头的任何复选框,并且在事件处理程序中,相同的文本已被替换以获取层id

如下面所示更改代码

$(document).ready(function(){
   $(document).on('change','input[type="checkbox"][id^="chk-layer"]' function() {  
       $("#LayerUL " + this.id.replace("chk-layer","") + " li input[type='checkbox']").prop('checked', this.checked); 
   }); 
});
此外,如果您在同一ul中有“全选”复选框,并且希望选中该ul的所有复选框,那么您可以通过添加类以选中下面的所有复选框来尝试如下操作

$(document).ready(function(){
   $(document).on('change','input[type="checkbox"][id^="chk-layer"]' function() {  
       $("#LayerUL " + this.id.replace("chk-layer","") + " li input[type='checkbox']").prop('checked', this.checked); 
   }); 
});
$(文档).ready(函数(){
$(document).on('change','.chkAll',function(){
$(this.parent().next().find(“:checkbox”).prop(“选中”,this.checked);
});
});

  • 全选
    • 儿童1
    • 儿童2
    • 儿童3
  • 全选
    • 儿童1
    • 儿童2
    • 儿童3

在函数chkAll()中,不能使用$(this)

我已经找到了一个简单的解决方案,允许选中复选框

 $("#LayerUL" + layergroupID + " li input[type='checkbox']").trigger('click');
触发它将选中复选框并触发事件问题解决


无论如何,谢谢

this
$(this).prop('checked')在函数中指向哪个上下文?对于第1层的子级,我也尝试了$(“#layerRul”+layergroupID+”li input[type='checkbox'])。prop('checked','checked');但它也不起作用。你可以添加调用函数的方式吗?分享你的html代码$(“#layerRul”+layergroupID+”“li input[type='checkbox']”。prop('checked',$)(“#layerrul”+layergroupID+”li input[type='checkbox'])。是(“:checked”);我可以这样编码吗?我需要检查第1层的子层$(“#layerrul”+layergroupID+“li input[type='checkbox'])。这是我需要检查的第1层的子层。我尝试了这个$(“#layerrul layergroupID+”li input[type='checkbox']”。prop('checked',$(“#LayerUL”+layergroupID+“li input[type='checkbox']”)是(“:checked”));但它也不起作用。如果你添加html,jQuery代码,它总是很好。无论如何,请检查更新的答案是否有效。我真的需要在函数中调用它,因为列表中的数据来自ajax,所以当我创建jQuery函数时,列表的最后一个值就是我得到的值