我有一个带有复选框的jsTree,显示正常。我可以打开 并关闭节点,选中并取消选中复选框等
当我尝试获取所有节点时,问题就出现了 检查。下面我列出了我尝试过的所有方法以及错误 我尝试每一个时得到的消息。
$.tree.plugin.checkbox.get_checked($.tree.reference("#smuDomains"));
$.tree is undefined
$.jstree.plugin.checkbox.get_checked($.jstree.reference("#smuDomains"));
$.jstree.plugin.checkbox is undefined
$.tree.plugins.checkbox.get_checked($.tree.reference("#smuDomains"));
$.tree is undefined
$.jstree.plugins.checkbox.get_checked($.jstree.reference("#smuDomains"));
$.jstree.plugins is undefined
第二个($ .jstree.plugin.checkbox)似乎得到了 最接近工作,但它似乎不喜欢“复选框” 参考。应该是check_box还是其他什么?
这是我用来初始化树的代码:
$.jstree._themes = "../script/css/jstree/themes/";
$("#smuDomains").jstree({
core : {},
themes : {
theme : "classic",
dots : true,
icons : true,
url : false
},
json_data : {
ajax : {
url : "[the url]",
datatype : "json",
data : function(n) {
return { id : n.attr ? n.attr("id") : 0 };
},
plugins : [ "themes", "json_data", "ui", "checkbox"]
});
});
答案 0 :(得分:3)
我正在使用此代码在提交表单之前获取复选框:
jQuery('#myForm').submit(function() {
jQuery('#mytree .jstree-checked').each(function () {
var node = jQuery(this);
var id = node.attr('id');
var node_parent = node.parents('li:eq(0)');
var pid = node_parent.attr('id');
jQuery("<input>").attr("type", "hidden").attr("name", "treenode").val(id).appendTo("#mytree");
});
});
答案 1 :(得分:1)
$( '#树')。jstree( 'get_checked')
答案 2 :(得分:0)
get_checked的一个问题是它将停在已检查的父节点上。
我们最终选择了这样的事情:
$('#idOfDivContainingTree .jstree-checked')
这有可能与jsTree的未来版本无关,因为它取决于实现
答案 3 :(得分:0)
你可以:
checked_nodes = $(“#smuDomains”)。jstree(“get_checked”,null,true);
$。each(checked_nodes,function(k,n){
node = $(n);
alert("name: "+node.attr("name")); //show each one of the nodes names
});
如果您只想要所选节点,则可以:
selected_nodes = $(“#smuDomains”)。jstree(“get_selected”,null,true);
希望有所帮助