有一个带有复选框的jsTree,如何禁用所有复选框?

时间:2013-12-10 10:29:57

标签: jquery jstree

我有一个动态构建的jsTree,允许用户选择他选择的任何节点。

现在我正在尝试将此树只读取,以便其他用户可以在不改变的情况下查看信息。

我找到的所有示例都是关于禁用特定节点......

我的问题是:有没有办法将树上的所有复选框定义为只读?

正在使用的代码:

jQuery.noConflict();
jQuery(
    function() {
        jQuery("#divTree").jstree(
            {
                "plugins": ["themes", "json_data", "checkbox", "sort", "ui", "real_checkboxes"],
                json_data: { data: data }
            }
        );
    }
);

2 个答案:

答案 0 :(得分:4)

解决了问题。这是任何需要它的人的解决方案。

jQuery.noConflict();
jQuery(
    function() {
        jQuery("#divTree")
        <% if(isReadOnly) { %>
        .bind("loaded.jstree", function (event, data) 
             {
            jQuery('.jstree a').click(function() {return false;});
        })
        <% } %>
       .jstree(
                {
                    "plugins": ["themes", "json_data", "checkbox", "sort", "ui", "real_checkboxes"],
                    json_data: { data: data }
                }
            );
        }
    );

答案 1 :(得分:0)

您可以在默认的type中定义它,或者为特定节点定义您自己的type,然后将它们绑定到它:

jQuery("#divTree").jstree({
    "types": {
        "default": {
            "check_node": false,
            "uncheck_node": false
        }
    },    
    "plugins": ["themes", "json_data", "checkbox", "sort", "ui", "real_checkboxes"],
    "json_data": { data: data }
});

如果我是你,我只需将types声明包装在服务器端if语句中,以确定是否要将此树读取为只读。

文档: http://www.jstree.com/documentation/types