jquery - 加载检查某些子节点的树时部分选择父节点

标签 jquery jstree

我使用的 jstree 复选框具有三种状态 - 已选中、未确定和未选中。当我检查父节点时,子节点会自动检查。当我选择子节点时,父节点被部分选择。我已在数据库中将选中的、未确定的状态保存为 1,将未选中的状态保存为 0。

$('#btnSubmit').bind('click', function (e) {
    e.preventDefault();
    var checked_ids = [];
    $('.jstree-checked, .jstree-undetermined').each(function () {
        var id = $(this).children('a').attr('id');
        checked_ids.push(id);
    });

    $.ajax({
        url: '@Url.Action("Action", "Controller")',
        type: 'POST',
        traditional: true,
        data: { AccessIds: checked_ids },
        success: function () {
            checked_ids.length = 0;
            alert('success!');
        },
        error: function () {
            alert('Error!');
        }
    });
    return false;
});

现在我想以三态加载树。如果选择了 child ,如何部分选择 parent 。 我正在做这样的事情:

$(function () {
    $('.divchkboxtree #divtree').jstree({
        "plugins": ["themes", "html_data", "checkbox", "sort", "ui"]
    })
    .bind('loaded.jstree', function () {
        $('.Node').each(function () {
            var id = $(this).attr('id');
            $('.divchkboxtree #divtree').jstree("check_node", '#' + id);
        });
    })
});

此处“.Node”类保存已检查的 ID。现在,当我加载树时,问题是检查所有节点,其中检查父节点,因为我已将部分选定的值保存为 1。

最佳答案

终于得到答案了。我是从后端维护的。我有一个字段Object,如果它是父项,则该字段为空。所以我所做的就是提取非父项的数据,即我提取了那些 IsSelected 为 1 即 true 的子项,最后上面的代码起作用了。上面的代码没有任何改变。

关于jquery - 加载检查某些子节点的树时部分选择父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128468/

相关文章:

javascript - 如何清除 setInterval 的所有实例?

javascript - Opera中使用jQuery粘贴事件异常

jquery - 使用jquery的两次时间差

javascript - JSTree 添加新的父节点或子子节点

javascript - 如何获取我选中的复选框的 ID?

javascript - 删除 jstree 中的根节点会分离事件监听器

javascript - 如何动态地在 Jade 中构建一个 jsTree?

javascript - 如何在下一次出现相同元素之前包装每个元素及其所有兄弟元素?

jquery - 如果 aria-expanded == true 使用 coffeescript 或 jquery 切换类

php - JSTree:使用 php 和 mysql 创建可扩展的树结构