我正在使用jstree,我想访问我的HTML中所有选中节点的 ID 和名称树中所有选中节点的 ID 和名称,以便在摘要中将它们一起呈现。
这是我的代码:
$("#summary").click(function () {
var id_arr = new Array();
var text_arr = new Array();
$("#tree").jstree('get_checked').each(function (index) {
id_arr.push($(this).attr("id"));
text_arr.push($(this).text());
});
alert("Your Selection: " + id_arr.join() + " " + text_arr.join());
});
虽然id_arr.push($(this).attr("id"));
只返回相关检查节点的ID(当检查父节点的所有子节点时仅返回父节点ID),text_arr.push($(this).text());
返回所有检查节点的名称(检查父节点的名称及其所有子节点的名称) .
你有什么想法如何只返回被检查的父母的名字吗?我已经考虑将隐藏的 HTML 属性(如<li id="123"> <a title="ID:123" hidden="name of node 123">name of node 123</a></li>
)添加到我的树节点并使用.attr("hidden")而不是访问node.text()但我认为必须有更好的解决方案。
任何帮助将非常感激!
更新:
树的 HTML(我真正的树非常广泛,但我认为这个可以):
<div id="tree">
<li id="123"> <a title="ID:123">tree</a>
<ul>
<li id="234"> <a title="ID:234">leaf tree</a>
<ul>
<li id="345"> <a title="ID:345">oak</a>
<ul>
<li id="456"> <a title="ID:456">white oak</a></li>
<li id="567"> <a title="ID:567">German oak</a></li>
</ul>
</li>
<li id="678"> <a title="ID:678">lime</a></li>
</ul>
</li>
<li id="789"> <a title="ID:789">conifer</a>
<ul>
<li id="890"> <a title="ID:890">pine</a></li>
<li id="901"> <a title="ID:901">spruce</a></li>
</ul>
</li>
</ul>
</li>
</div>
示例:选择“橡木”时,应仅返回“345 橡木”而不是“345 橡木白橡木德国橡木”。
顺便说一句,我用“隐藏”的想法是行不通的,因为那里写的元素是隐藏的。