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

我正在将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。我正在使用以下代码:

所以 我怎么知道是否选中了所有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
        }
    }); 

谢谢

lvshanglin 回答:如何知道是否已选中jstree的所有复选框

请看看https://www.jstree.com/api/#/?q=checkbox&f=check_node.jstree

请在下面注意

triggered when an node is checked (only if tie_selection in checkbox settings is 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 );                     
}

有关完整且可行的示例,您可以查看https://everyething.com/Example-of-jsTree-with-select-all-checkbox

,

如果您有一个具有特定ID的父节点,则可以使用is_checked (obj)作为父节点来决定是否检查所有其他节点。

本文链接:https://www.f2er.com/3152077.html

大家都在问