javascript - 找到所有 parent 并在 TreeView 中检查他们?

标签 javascript jquery css treeview tree-traversal

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

我的问题是它希望选择反向进行。也就是说,勾选框内的所有 parent 而不是 child 。

例如,在上面的链接中,如果您单击我的文档,我希望同时选中文档

我试过使用 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() 来做到这一点方法,然后检查直接子节点的输入。您可能需要根据 html 的布局修改它。我已经用 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);
});

关于javascript - 找到所有 parent 并在 TreeView 中检查他们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33017791/

相关文章:

javascript - tablesorter jquery - 如何修复列标题

javascript - 当我向包装器添加动画时,为什么我的包装器会移出其位置?

javascript - Jquery Accordion 无法正常工作

javascript - jquery this 动画这个没有 id 的元素

javascript - jQuery通过head中的JS加载

android - Webview 在右侧添加空白

javascript - 使用 jQuery 第二次单击元素类后开始操作

javascript - 如何使整个背景图像的 div 可点击?

css - 如何使用 Bootstrap 制作类似 twitter 的悬停 'Follow' 按钮?

javascript - 日期选择器缺少 Bootstrap 导航箭头