Checkbox 如何知道是否选中了jstree的所有复选框

Checkbox 如何知道是否选中了jstree的所有复选框,checkbox,jstree,jstree-search,Checkbox,Jstree,Jstree Search,我正在使用带有复选框的jstree 我还有一个Id为chkSelectAll(全选)的复选框。当用户选择它时,将选中所有jstree复选框,如果取消选择它,则将使用以下代码取消选中所有jstree checkboex: $('#chkSelectAll').change(function() { if ($('#chkSelectAll').is(":checked")) { $("#drpDownSource .sou

我正在使用带有复选框的jstree

我还有一个Id为chkSelectAll(全选)的复选框。当用户选择它时,将选中所有jstree复选框,如果取消选择它,则将使用以下代码取消选中所有jstree checkboex:

  $('#chkSelectAll').change(function() {          
       if ($('#chkSelectAll').is(":checked"))
       { 
           $("#drpDownSource .source-list").jstree().check_all(true);
       }
       else
       {
           $("#drpDownSource .source-list").jstree().uncheck_all(true);
       }
     }); 
现在,如果手动选中了所有jstree复选框,那么我想选中chkSelectAll复选框,如果未选中任何一个jstree复选框,那么我想取消选中chkSelectAll。我正在使用以下代码:

  $('#chkSelectAll').change(function() {          
       if ($('#chkSelectAll').is(":checked"))
       { 
           $("#drpDownSource .source-list").jstree().check_all(true);
       }
       else
       {
           $("#drpDownSource .source-list").jstree().uncheck_all(true);
       }
     }); 
所以 如何知道是否选中了所有jstree复选框

.on("check_node.jstree uncheck_node.jstree", function (e, data) {            
        debugger;
        if (e.type == "uncheck_node") {
            $("#chkSelectAll").prop( "checked", false );                
        }
        else if (e.type == "check_node") {
            // here I get only one checkbox's status.
            // How to check all checkboxe's status
        }
    }); 
谢谢

请看一下

请注意下面

选中节点时触发(仅当复选框设置中的tie_选择为false时)

我希望您的树复选框插件配置将
tie_selection
设置为false

如果要查看是否手动选中所有节点以选中上面的“全选”复选框,则可以使用下面的c

else if (e.type == "check_node") {                  
  if ($(this).jstree().get_json('#', {flat:true}).length === $(this).jstree().get_checked(true).length)
    $("#chkSelectAll").prop( "checked", true );                     
}

对于完整且有效的示例,您可以查看一下

如果您有一个具有特定id的父节点,那么您可以使用父节点的is_checked(obj)来决定是否检查所有其他节点