查找所有 parents 并在树视图中检查它们?

Finding all parents and checking them in a treeview?

我正在此页面上使用此代码:http://experiments.wemakesites.net/css3-treeview-with-multiple-node-selection.html

我的问题是它希望选择反向进行。也就是说,要选中复选框的所有 parent 而不是 children.

例如,在上面的link中,如果您要单击我的文档,我需要文档 也检查了。

我试过使用 parents() 和 parent().parent().prev().prev() 的多个版本,唯一的我想出了这个有点实用的是:

$(".acidjs-css3-treeview").delegate("label input:checkbox", "change", function() {
    var
    checkbox = $(this),
    nestedList = checkbox.parent().parent().parent().prev().prev(),
    selectNestedListCheckbox = nestedList.find("input:checkbox");

    if(checkbox.is(":checked")) {
        return selectNestedListCheckbox.prop("checked", true);
    }
    selectNestedListCheckbox.prop("checked", false);
});

这只会选择第一个 parent,而我需要所有 parent。我想我可以构建一个循环来继续使用同一个脚本,但它看起来非常丑陋。

做我正在寻找的事情的更简洁的方法是什么?

您可以使用 jQuery 的 parents() method, then checking the immediate children for inputs. You might need to modify this depending on the layout of your html. I've demonstrated this with a jsfiddle 来做到这一点。

关键部分是:

var checkboxes = $this.parents().children('input');

完整:

$('input').on('change', function() {
    var $this = $(this);
    var checkboxes = $this.parents().children('input');
    if($this.is(":checked")) {
        return checkboxes.prop("checked", true);
    }
    checkboxes.prop("checked", false);
});