jstree v1.0
我刚刚对复选框示例进行了修改:http://www.jstree.com/documentation/checkbox
我的目标: 检查任何节点时,我希望检查所有父节点(默认行为不正常,因为这是部分选择的,这对我不利)
基于提示和文档,我扩展了原始示例,但我发现check_node
方法不起作用。我没有发现任何影响。
欢迎任何提示或建议。
<div id="demo1" class="demo">
<ul>
<li id="phtml_1">
<a href="#">Root node 1</a>
<ul>
<li id="phtml_2" >
<a href="#">Child node 1</a>
</li>
<li id="phtml_3">
<a href="#">A Child node 2</a>
</li>
</ul>
</li>
<li id="phtml_4">
<a href="#">Root node 2</a>
</li>
<li id="phtml_5">
<a href="#">Root node 1</a>
<ul>
<li id="phtml_51">
<a href="#">Child node 1</a>
</li>
<li id="phtml_52">
<a href="#">A Child node 2</a>
</li>
</ul>
</li>
<li id="phtml_6">
<a href="#">Root node 1</a>
<ul>
<li id="phtml_61">
<a href="#">Child node 1</a>
</li>
<li id="phtml_62">
<a href="#">A Child node 2</a>
</li>
</ul>
</li>
</ul>
</div>
<script type="text/javascript" class="source">
$(function () {
var x = $("#demo1");
$(x).jstree({
"checkbox" :{
real_checkboxes:false,
override_ui:true,
two_state:false,
},
"plugins" : [ "themes", "html_data", "checkbox", "ui" ]
}).bind('check_node.jstree', function (e, data) {
console.log('check_node.jstree ----------------------------------------------');
console.log(e);
var all_selected = $(x).jstree('get_checked')
console.log('all_selected='+all_selected);
for(var i=0;i<all_selected.length;i++){
var paths = $(x).jstree('get_path', all_selected[i], true);
console.log(' paths='+paths);
for(var j=0; j< paths.length;j++){
console.log(' checking node (not working)='+paths[j]);
$(x).jstree('check_node',paths[j]);
}
}
});
console.log('programaticcaly checking last parent node (not working)')
//$(x).jstree('check_node',$('li#phtml_6'));
$.jstree._reference("#demo1").check_node('li#phtml_6');
});
</script>
答案 0 :(得分:4)
以下代码对我有用......
var contact_list = $('#compose_contact_list'); contact_list.jstree({ "checkbox" : { "keep_selected_style" : false, "tie_selection" : false }, "plugins" : [ "checkbox" ] }); contact_list.on("check_node.jstree", function(event, data){ alert(data.node.text); });
答案 1 :(得分:2)
试试这个,
.bind('check_node.jstree', function(e, data) {
var currentNode = data.rslt.obj.attr("id");
var parentNode = data.inst._get_parent(data.rslt.obj).attr("id");
jQuery.jstree._reference($("#tree")).check_node('#'+parentNode);
});
如果您想要示例,请参阅此http://jsfiddle.net/bwTrP/3/
答案 2 :(得分:1)
jstree-3.2.1
/**
* check tree node
* treeid:tree id
* nodeids:node id, id or id array
*/
function checkTreeNodes (treeid, nodeids) {
// Tree
var tree = $("#" + treeid);
// IE
tree.jstree(true).check_node(nodeids);
// Chrome or Firefox
tree.on("loaded.jstree", function (e, data) {
tree.jstree(true).check_node(nodeids);
}).jstree();
}
答案 3 :(得分:0)
只需包含一个简单的click
函数,如下所示。
$(x).on("click", function () {
$(x).jstree("select_all");
});