单击按钮时,在jstree中按ID删除节点
我正在使用jstree ,我想在单击按钮后通过其ID删除特定节点。
这是我的html列表格式的树:
这是我的按钮事件(我有几个按钮,因此数组):
buttons[0].addEventListener( "click", function( ev ) { $("#testtree").jstree("remove", $("111")); });
我缺少什么想法?
更新:
我已经纠正了错字,但它仍然无效。 这是完整的代码,也许是其他地方的错误?
jstree test $(document).ready(function() { $("#testtree").jstree({ "plugins" : [ "themes", "html_data", "checkbox", "ui" ], "core": { "initially_open": ["1"]} }); }); var buttons = document.querySelectorAll("button"); buttons[0].addEventListener( "click", function( ev ) { $("#testtree").jstree("remove","#111"); });
根据jsTree 文档,您可以像这样删除
$("#testtree").jstree("remove","#111");
没有$()
$("#testtree").jstree({ "plugins": ["themes", "html_data", "checkbox", "ui", "crrm"], "core": { "initially_open": ["1"] } });
你需要在插件中添加“crrm”
jsTree的手册 (版本3.0.0)说:
请记住,默认情况下,会阻止对树的所有修改(创建,重命名,移动,删除)。 要启用它们,请将core.check_callback设置为true
您还可以使用函数指定允许的修改类型。 例如,要仅允许删除节点:
$('#tree').jstree({ 'core' : { 'check_callback' : function (operation, node, node_parent, node_position, more) { // operation can be 'create_node', 'rename_node', 'delete_node', 'move_node' or 'copy_node' // in case of 'rename_node' node_position is filled with the new node name return operation === 'delete_node'; } } });
任何答案都适合我。 我更喜欢使用它:
$.jstree._reference("#tree-container or node or jquery selector").delete_node(node);
希望它可以帮到某人。
这对我很有用。
我有超过70,000个叶子节点,这瞬间消失。
this.getFilterTree().jstree("destroy"); this.getFilterTree().html(""); //return tree holder div getFilterTree: function() { return $('#jstreeHolder'); }
删除后,您可以再次实例化树!
这对我有用而不使用任何外部插件。
$('#treeid').jstree().delete_node([node.id]); $('#treeid').jstree("refresh");
添加check_callback = true;
jsTree config的内核(例如core.check_callback = true;
),然后是$('#tree').jstree(true).delete_node(*yourNodeId*);
小提琴: https : //fiddle.jshell.net/sqiudward/kf2eym0k/
目前“crrm”插件未激活。
根据jsTree 文档,您可以删除节点。
例如;
var node = $("#tree").jstree(true).get_node("111");//111 is node id $("#tree").jstree("delete_node", node);
我认为有一个拼写错误:尝试:
$("#testtree").jstree("remove", $("#111"));