我将我的工作示例复制到 jsfiddle http://jsfiddle.net/vvMaG/56/
<html>
<script type="text/javascript" src="../_lib/jquery.js"></script>
<script type="text/javascript" src="../_lib/jquery.hotkeys.js"></script>
<script type="text/javascript" src="../jquery.jstree.js"></script>
<div id="menu">
<input type="button" id="remove" value="remove" style="display:block; float:left;"/>
</div><br><br>
<div id="tree">
<ul>
<li><a>List item one</a></li>
<li><a>List item two with subitems:</a>
<ul>
<li><a>Subitem 1</a></li>
<li><a>Subitem 2</a></li>
</ul>
</li>
<li><a>Final list item</a>
<ul>
<li><a>Subitem 1</a></li>
<li><a>Subitem 2</a></li>
</ul>
</li>
</ul>
</div>
<script type="text/javascript">
$(function(){
$("#tree")
.jstree({
"plugins":["html_data","ui","themes","crrm"],
"themes" :{
"theme":"classic"
}
})
.bind("select_node.jstree", function (e, data) {
/*point 1 here*/
var parent=data.inst._get_parent(data.rslt.obj);
console.log(parent.find('a').first().text());
})
.bind("remove.jstree", function (e, data){
/*point 2 here*/
var parent=data.inst._get_parent(data.rslt.obj);
alert(parent.find('a').first().text());
/*point 3 here*/
data.rslt.obj.each(function () {
console.log(data.rslt.parent.children()[1].text);
});
})
});
$(function () {
$("#menu input").click(function (){
$("#tree").jstree(this.id);
})
});
</script>
</html>
当我选择一个节点时,它会正确获取父节点(第 1 点)。但是,我怀疑此方法在删除节点时不起作用,因为已删除的节点没有父节点(第 2 点),因为我收到parent.find is not a function
错误消息。
我知道如何获得父母的唯一方法是循环data.rslt.parent.children()
(第 3 点)。然而,显然这只会得到第一个父母,因为我正在经历rlst.parent
and not data.rslt.obj
。我不data.rslt.object.parent
知道何时选择了多个要删除的节点。有没有办法让所有已删除节点的父节点?
谢谢