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函数时,列表的最后一个值就是我得到的值