Jquery 如何使treeview中的父节点处于选中状态(如果只有一个子节点处于选中状态),以及如何使所有子节点处于未选中状态(如果所有子节点都处于未选中状态)

Jquery 如何使treeview中的父节点处于选中状态(如果只有一个子节点处于选中状态),以及如何使所有子节点处于未选中状态(如果所有子节点都处于未选中状态),jquery,tree,nodes,checked,Jquery,Tree,Nodes,Checked,如果只选中了其子节点中的一个,如何使treeview中的父节点处于选中状态;如果所有子节点都未选中,如何使其处于未选中状态。 我正在使用这个脚本 <script type="text/javascript"> $(function () { $(".MyTreeView").find(":checkbox").change(function () { //check or uncheck childs

如果只选中了其子节点中的一个,如何使treeview中的父节点处于选中状态;如果所有子节点都未选中,如何使其处于未选中状态。

我正在使用这个脚本

 <script type="text/javascript">
     $(function () {

         $(".MyTreeView").find(":checkbox").change(function () {
             //check or uncheck childs
             var nextele = $(this).closest("table").next()[0];
             if (nextele&&nextele.tagName == "DIV")
             { 
                 $(nextele).find(":checkbox").prop("checked", $(this).prop("checked"));

             }
             //check nodes all with the recursive method
             CheckChildNodes($(".MyTreeView").find(":checkbox").first()); 

         });
         //method check filial nodes
         function CheckChildNodes(Parentnode)
         {

             var nextele = $(Parentnode).closest("table").next()[0];

             if (nextele && nextele.tagName == "DIV") {
                 $(nextele).find(":checkbox").each(function () {
                     CheckChildNodes($(this));
                 });

                 if ($(nextele).find("input:checked").length == 0) {
                     $(Parentnode).removeAttr("checked");
                 }
                 if ($(nextele).find("input:checked").length > 0) {
                     $(Parentnode).prop("checked", "checked");
                 }

             }
             else { return; } 

         }

     }) 
     </script>


$(函数(){
$(“.MyTreeView”).find(“:checkbox”).change(函数(){
//勾选或取消勾选childs
var nextele=$(this).closest(“表”).next()[0];
if(nextele&&nextele.tagName==“DIV”)
{ 
$(nextele).find(“:checkbox”).prop(“选中”),$(this.prop(“选中”);
}
//使用递归方法检查所有节点
CheckChildNodes($(“.MyTreeView”).find(“:checkbox”).first();
});
//方法检查子节点
函数CheckChildNodes(Parentnode)
{
var nextele=$(Parentnode).closest(“表”).next()[0];
if(nextele&&nextele.tagName==“DIV”){
$(nextele).find(“:checkbox”).each(函数(){
CheckChildNodes($(this));
});
if($(nextele).find(“输入:选中”).length==0){
$(Parentnode).removeAttr(“选中”);
}
if($(nextele).find(“输入:选中”).length>0){
$(Parentnode).prop(“选中”、“选中”);
}
}
else{return;}
}
}) 
但它只适用于第一个节点,我想将它应用于所有其他节点。 这是指向我的测试页面的链接
我解决了我的问题 我用了这个答案,效果很好 [


谢谢

这是一些非常讨厌的HTML,你能修改它吗?如果你有一个良好的结构和一些逻辑,这个脚本可能会容易得多。我正在使用asp.net control treeview,我从这个链接尝试了jquery: