查找所有 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);
});
我正在此页面上使用此代码: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);
});